36°

MySQL入门

mysql对大小写不是很敏感,要区分大小写的话,要自己去设置

1.添加数据库: CREATE DATABASE test_db;

2.查看数据库: SHOW DATABASES;  注意最后有S

3.查看数据库的定义:SHOW CREATE DATABASE test_db \G;

4.删除数据库:DROP DATABASE test_db;

5.查看系统存储引擎:SHOW ENGINES \G;

6.存储引擎选择:如果要提供提交、回滚和崩溃恢复能力的事物安全能力,并要求实现并发控制,InnoDB是个很好的选择。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率,如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。如果只有INSERT和SELECT操作,可以选择Archive引擎,Archive存储引擎支持高并发的输入操作,但是本身并不是事物安全的,其非常适合存储归档数据,如记录日志信息可以使用Archive引擎。

7.cmd登录mysql:mysql -h localhost -u root -p

8.选择当前的数据库为test_db:   USE test_db;

9.查看默认存储引擎:SHOW VARIABLES LIKE ‘storage_engine’

10.修改默认存储引擎:首先打开my.ini文件,将[mysqld]字段下面的default-storage-engine参数后面的值,由InnoDB改为MyISAM,保存重启MySQL

11.创建tb_emp1表: 注意建表的时候是()而不是{}

CREATE TABLE tb_emp1
(
    id INT(11),
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
);

这里面的int(M) M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关,注意这里只是显示,它并不会影响到数据的存储空间,只是展示而已

12.查看表: SHOW TABLES;

13.使用主键约束:

13.1单字段逐渐

有两种定义情况:

CREATE TABLE tb_emp2 (
id INT(11)PRIMARY KEY, 
name VARCHAR(25), 
deptId INT(11), 
salary FLOAT 
);

或者:

CREATE TABLE tb_emp4 (
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT ,
PRIMARY KEY(id)
);

13.2多字段联合主键:

CREATE TABLE tb_emp5 (
name VARCHAR(25), 
deptId INT(11), 
salary FLOAT , 
PRIMARY KEY(name,deptId) 
);

14.使用外键约束

CREATE TABLE tb_dept1
(
id INT(11)PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
);
CREATE TABLE tb_emp5     
(
    id int(11) PRIMARY KEY,
    name varchar(25),
    deptId int(11), 
    salary float,
    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);

以上语句执行成功以后,在tb_emp5上添加了一个名称为fk_emp_dept1的外键约束,外键名称为deptId,其一代与表tb_dept1的主键id

上面的NOT NULL是非空约束,表示字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

15.唯一性约束

唯一性约束要求该列唯一,允许为空,但只能出现一个空值。唯一性约束可以确保一列或者几列不出现重复值。

其语法规则如下:

15.1 在定义完列之后直接指定唯一约束 

name varchar(22)UNIQUE;

15.2 在定义完所有列之后指定唯一约束

CONSTRANT STH UNIQUE (name) 

其中STH为约束名

16.设置默认约束

deptId INT(11)DEFAULT 1111

17.设置表的属性值自动增加

id INT(11)PRIMARY KEY AUTO_INCREMENT

AUTO_INCREMENT关键字初始值为1,没增加一条记录,字段值自动加一,一个表只能有一个字段使用AUTO_INCREMENT,且该字段必须是主键的一部分。

CREATE TABLE tb_emp8
 (
id INT(11)PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(25)NOT NULL,
deptId INT(11),
salary float,
CONSTRAINT fk_emp_dept5 FOREIGN KEY(deptId)REFERENCES tb_dept1(id)
);
mysql> insert into tb_emp8(name,salary)
    -> VALUES('Lucy',1000),('Lura',1200),('Kevin',1500);

结果:

mysql> SELECT *FROM tb_emp8;
+----+-------+--------+--------+
| id | name  | deptId | salary |
+----+-------+--------+--------+
|  1 | Lucy  |   NULL |   1000 |
|  2 | Lura  |   NULL |   1200 |
|  3 | Kevin |   NULL |   1500 |
+----+-------+--------+--------+
3 rows in set (0.00 sec)

可以看到我们并没有设置id值,但是插入后id值自动增加了

18.查看表结构 DESCRIBE和SHOW CREATE TABLE语句

18.1 DESCRIBE 

describe 表名;可以简化成desc 表名;

18.2 SHOW CREATE TABLE 表名 \G;

不加\G的话,结果显示会比较混乱

19.修改数据表

19.1 修改表名 alter table tb_empt3 rename deptment3;

19.2 修改字段数据类型   alter table 表名 modify 字段名 数据类型;

 alter table tb_dept1 modify name varchar(30)

19.3修改字段名 alter table 表名 change 旧的字段名 新的字段名 新数据类型;

19.4添加字段  alter table 表名 add 新的字段名 数据类型 [约束条件] [first|after 已存在的字段名];

[]表示可选。

mysql> alter table tb_dept1 add column3 int(11) after name;

mysql> desc tb_dept1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | | column3 | int(11) | YES | | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)

19.5 删除字段 alter table 表名 drop 字段名

19.6 修改字段的排列位置

alter table 表名 modify 字段1 数据类型 first|after 字段2

19.7修改表的存储引擎

alter table 表名 engine=更改后的引擎名

19.8删除表的外键约束

alter table 表名 drop foreign key 外键约束名

20 删除数据表

drop table 表1,表2...;

如果写成drop table if exists 表1,表2...;可以再删除前判断表是否存在,如果不存在,SQL语句可以顺利执行,只是会发出警告。

删除主表时,必须先删除关联的表的外键约束条件,才能删除主表。

本文由【小】发布于开源中国,原文链接:https://my.oschina.net/u/4433424/blog/3159489

全部评论: 0

    我有话说: