mysql创建表

MySQL表的完整性约束

廉价感情. 提交于 2019-12-04 09:27:21
MySQL表的完整性约束 一、概览 为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。 约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: 约束条件 解释 NOT NULL 非空约束,指定某列不能为空; UNIQUE 唯一约束,指定某列或者几列组合不能重复 PRIMARY KEY 主键,指定该列的值可以唯一地标识该列记录 FOREIGN KEY 外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 二、NOT NULL 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 2.1 not null实例 mysql> create table t12 (id int not null); Query OK, 0 rows affected (0.02 sec) mysql> select * from t12; Empty set (0.00 sec) mysql> desc t12; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-

MySQL数据库的表和库操作

怎甘沉沦 提交于 2019-12-04 05:50:06
mac系统下mysql密码设置与破解 mysqladmin -uroot -p password "123" # 为root账户设置密码 mysqladmin -uroot -p123 password "123abc" # 修改root用户密码 忘记密码后如何强制刷新密码? 1、先停止mysql服务端 2、在终端上以超级用户的形式输入命令:mysqld_safe --skip--grant--tables 3、在开启一个终端,输入:mysql -uroot -p 登陆mysql 4、进入mysql后,修改root用户密码;输入命令:update mysql.user set password=password("123") where user="root" and host="localhost"; 5、然后在刷新,输入命令:flush privileges; 6、然后再再终端上干掉mysql服务 7、然后再正常重启mysql服务端。 权限管理 1、创建账户 创建本地账号(只能在mysql服务端的那台机子上登陆) create user 'xu'@'localhost' identified by '123abc' 创建远程账号 create user 'xu'@'192.169.0.30' identifide by '123abc' # 只能在此ip地址的机器上登陆

MySQL 拷贝数据库表方式备份,还原后提示 table xxx '' doesn`t exist

♀尐吖头ヾ 提交于 2019-12-04 05:16:21
MySQL很强大,支持直接拷贝数据库文件快速备份,那数据库文件在哪里呢? 打开MySQL的配置文件 my.ini ,找到 datadir 节点,如 datadir="D:/Program Files/MySQL/MySQL Server 5.1/data" 进入上述文件夹,就可以看到MySQL中新建的数据库文件夹了,每个文件夹以数据库名命名的,你想备份哪个数据库,把这个文件夹拷贝走即可。到时还原数据库,把它拷贝到data目录下即可,就这么简单! 但是,今天在一台MySQL服务器上拷贝备份了一个数据库后,在另外一台服务器上还原后,重启MySQL服务,通过使用 navicate for mysql 工具查看数据库 “xxx database”中某张表,结果显示“ mysql table 'xxx table' doesn`t exist ”。 查看了下MySQL的 data 文件加下的文件,发现了 WIN-4FA0WLP5F0V.err 和 WIN-4FA0WLP5F0V.pid 两个文件,于是看了具体的错误内容如下: 120622 12:00:36 [Note] Plugin 'FEDERATED' is disabled. 120622 12:00:37 InnoDB: Initializing buffer pool, size = 300.0M 120622 12:00:37

第三篇:表相关操作

戏子无情 提交于 2019-12-04 03:30:55
阅读目录 一 存储引擎介绍 二 表介绍 三 创建表 四 查看表结构 五 数据类型 六 表完整性约束 七 修改表ALTER TABLE 八 复制表 九 删除表 一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/linhaifeng/articles/7213670.html 二 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行内容称为一条记录 三 创建表 #语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); #注意: 1. 在同一张表中,字段名是不能相同 2. 宽度和约束条件可选 3. 字段名和类型是必须的 MariaDB [(none)]> create database db1 charset utf8; MariaDB [(none)]> use db1; MariaDB [db1]> create table t1( -> id int, -> name varchar(50), -> sex enum('male','female'), -> age int(3) -

MySQL优化

谁说我不能喝 提交于 2019-12-04 00:05:22
SQL优化背景 开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。 SQL优化发生在业务量达到一定规模的时候 目的是优化SQL的执行效率 MySQL 优化 优化范围 硬件资源 操作系统参数,数据库参数配置 SQL语句,索引优化 SQL优化 数据库设计优化【规范,前期设计】 SQL语句优化 索引优化 读写分离,分库分表 慢查询语句 慢查询:10s无返回结果,定义为慢查询 SHOW STATUS LIKE "slow_queries"; SHOW VARIABLES LIKE "long_query_time";//可以显示当前慢查询时间 set long_query_time=1 ;//可以修改慢查询时间 常用优化方法 查询优化 避免全表扫描(考虑在 where 及 order by 涉及的列上建立索引) 尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值

MySQL当批量插入遇上唯一索引

最后都变了- 提交于 2019-12-03 21:22:16
一、 背景 以前使用SQL Server进行表分区的时候就碰到很多关于唯一索引的问题: Step8:SQL Server 当表分区遇上唯一约束 ,没想到在MySQL的分区中一样会遇到这样的问题: MySQL表分区实战 。 今天我们来了解MySQL唯一索引的一些知识:包括如何创建,如何批量插入,还有一些技巧上SQL; 这些问题的根源在什么地方?有什么共同点?MySQL中也有分区对齐的概念?唯一索引是在很多系统中都会出现的要求,有什么办法可以避免?它对性能的影响有多大? 二、 过程 (一) 导入差异数据,忽略重复数据,IGNORE INTO的使用 在MySQL创建表的时候,我们通常创建一个表的时候是以一个自增ID值作为主键,那么MySQL就会以PRIMARY KEY作为聚集索引键和主键,既然是主键,那当然是唯一的了,所以重复执行下面的插入语句会报1062错误:如Figure1所示; -- 创建测试表 CREATE TABLE `testtable` ( `Id` INT ( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT, `UserId` INT ( 11 ) DEFAULT NULL , `UserName` VARCHAR ( 10 ) DEFAULT NULL , `UserType` INT ( 11 ) DEFAULT NULL ,

MySQL连表查询练习题

社会主义新天地 提交于 2019-12-03 20:58:24
建库 库名:linux50 字符集:utf8 校验规则:utf8_general_ci mysql> create database if not exists linux5 charset utf8 collate utf8_general_ci; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | linux5 | | mysql | | performance_schema | | test | | world | +--------------------+ 建表 表名:student(学生表) 字段 数据类型要求 是否为空 注释 sno 最多20位 否 学号(主键) sname 可变长 否 学生姓名 sage 最小整数,非负数 否 学生年龄 ssex 0,1 否 学生性别(1是男,0是女)默认为男) sbirthday 时间类型 默认为空 学生生日 class 可变长 否 学生班级 mysql> create table student( sno bigint(20) #zerofill# not null primary key auto

MySQL 单表 多表查询 练习一

不想你离开。 提交于 2019-12-03 00:36:40
创建班级表: mysql> create table class1( -> cid int auto_increment primary key, -> caption varchar(32) not null default '' -> )charset=utf8; insert into class1 (caption) values ('三年二班'),('一年三班'),('三年一班'); mysql> select * from class1; +-----+--------------+ | cid | caption | +-----+--------------+ | 1 | 三年二班 | | 2 | 一年三班 | | 3 | 三年一班 | +-----+--------------+ 3 rows in set (0.00 sec) 创建学生表: mysql> create table stu( -> sid int auto_increment primary key, -> sname varchar(32) not null default '', -> gender varchar(32) not null default '', -> class_id int not null default 1, -> -> constraint fk_stu

MySQL 基础之 单表、多表联查

不问归期 提交于 2019-12-03 00:16:53
目录 使用和不使用not null 的区别: 不使用: 查询时用‘name is null’ 作为条件 使用:查询时用‘name=’‘ ’作为查询条件 单表操作: 单表查询的语法: 分组:group by having: order by: order by 字段名 asc(升序)/desc(降序) limit 分页: limit offset, size 多表操作 外键: 占用空间少,方便修改数据 一对多: 多对多: 一对一: 多表联查: 使用和不使用not null 的区别: 不使用: 查询时用‘name is null’ 作为条件 mysql>create table t8( -> id int auto_increment primary key, -> name varchar(32), -> email varchar(32) -> )charset=utf8; mysql>insert into t8(email) values ('allen'); mysql> select * from t8; +----+------+-------+ | id | name | email | +----+------+-------+ | 1 | NULL | allen | +----+------+-------+ 1 row in set (0.01 sec)

express连接数据库 读取表

匿名 (未验证) 提交于 2019-12-02 23:57:01
connection 连接数据库 connection.query 查询表 1.依赖 const mysql = require('mysql');    连接数据库代码   var connection = mysql.createPool({ //创建mysql实例 host:'localhost', port:'3306', user:'root', password:'root', database:'test' }); connection.getConnection(function (err,connection) { // 使用连接池 if(err){ console.log('与MySQL数据库建立连接失败!'); console.log('错误信息为:' + err); } else{ console.log('与MsSQL数据库建立连接成功!'); } });   查询表格代码 connection.query('SELECT * FROM types', function(err,result){ resolve(); console.log(result); });    来源:博客园 作者: chenyi4 链接:https://www.cnblogs.com/chenyi4/p/11446762.html