1.前言:
我们在DBA运维中,常常会对Mysql数据进行进行增删改查等一系列操作,其中常用的语句分为三大类:DML语句、DDL语句、DCL语句。
- DML 数据库操作语句,主要用于添加,删除,更新和查询,并检查数据完整性,常用的语句关键字主要包括insert update delete select
- DDL 这些语句定义了不同的数据段,数据库,表,列,索引等数据对象,常用语句的关键字主要包括 create drop alter等
- DCL 数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库,表,字段,用户的访问权限和安全级别,常用的关键字grant revoke等
2.列属性
一般我们在添加列属性约束时有一下几种(一般建表时添加): **primary key** :主键约束,设置为主键的列,此列的值必须非空且唯一,主键在一个表中只能有一个,但是可以有多个列一起构成。 **not null** :非空约束,列值不能为空,也是表设计的规范,尽可能将所有的列设置为非空。可以设置默认值为0 **unique key** :唯一键,列值不能重复 **unsigned** :无符号,针对数字列,非负数。 其他属性: **key** :索引,可以在某列上建立索引,来优化查询,一般是根据需要后添加 **default** :默认值列中,没有录入值时,会自动使用default的值填充 **auto_increment**:自增长,针对数字列,顺序的自动填充数据(默认是从1开始,将来可以设定起始点和偏移量),通常该属性一般会用在主键上 **comment ** : 注释
3.SQL基本语法操作
3.1.对数据库的操作
1.创建数据库 格式;create database 数据库名 charset=utf8; 实例:create database Liulin charset=utf8; 2.删除数据库 格式:drop database 数据库名; 实例:drop database Liulin; 3.切换数据库 格式; use 数据库名; 实例; use aron; 4.查看当前选择的数据库 select database(); 5.创建数据库的时候要注意(建库规范): 1.命名时不能有大写字母 2.建库要加字符集 3 库名不能有数字开头 4 库名要和业务相关
3.2.表操作
1.查看当前数据库中所有表 格式:show tables; 2.创建表 格式:create table 表名(列及类型) 说明:auto_increment表明自增长 primary key 主键 not null 表示不为空 3.删除表 格式:drop table 表名; 实例:drop table student; 4.查看表结构; 格式:desc 表名; 实例:desc car 5.查看建表语句: 格式:show create table 表名; 实例:show create table student; 6.重命名表: 格式: rename table 原表名 to 新表名; 实例:rename table car to newCar; 7.修改表; 格式:alter table 表名 add|change|drop 列名 类型; 实例:alter table newCar add isDelete bit default 0
3.3.数据操作(增、删、改、查)
1.insert a.全列插入: 格式:insert into 表名 values(...) 说明:主键列时自动增长,但是在全列插入时需要占位,通常使用0,插入成功以后以实际数据为准 实例:insert into student values(0,”tom“,19,1,"北京",0) b.缺省插入 格式:insert into 表名(列1,列2,....)values(值1,值2,...); 实例:insert into student (name ,age, address)values("lilei",19,"上海"); c.同时插入多条数据 格式:insert into 表名 values(...),(...),... 实例:insert into student values ("hanmeimei",19,"上海",0),("aron",19,"北京”,0)...... 2.delete 格式:delete from 表名 where 条件; 实例:delete from student where id=4; 注意:没有条件是全部删除,慎重 3.update 格式:update 表名 set 列1=值1,列2=值2,....where 条件 实例:update student set age=16 where id=7; 注意:如果没有条件是全部列都修改,慎用 4.select 格式:select * from 表名 如果要经常根据score列进行查询,就可以对score列创建索引:说明:查询表中的全部数据 实例:select * from student;
3.4 索引的语法
1.创建索引 语法: ALTER TABLE 表名 ADD INDEX idx_name_score (name, score); ##name和score是表中的具体的字段 实例: ALTER TABLE 表名 ADD INDEX idx_score(索引名) (score); 使用ADD INDEX 索引名 (score)就创建了一个名称为idx_score,
使用列score的索引。索引名称是任意的,索引如果有多列,可以在括号里依次写上。 2.删除索引 alter table 表名 drop index 索引名;
3.5创建一个完整的建表语句示例如下:
1 CREATE TABLE stu( 2 id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号', 3 sname VARCHAR(255) NOT NULL COMMENT '姓名', 4 sage TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄', 5 sgender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别' , 6 sfz CHAR(18) NOT NULL UNIQUE COMMENT '身份证', 7 intime TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入学时间' 8 ) ENGINE=INNODB CHARSET=utf8 COMMENT '学生表';