SQL 二 DML
Delete语句和truncate语句的区别:
1.delete可以加where条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,如果delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除可以回滚。
5.truncate删除不能回滚,delete删除可以回滚。
新建数据库:
Create database if not exists books;
库的修改
RENAME DATABASE books TO 新库名
更改库的字符集
ALTER DATABASE books CHARACTER SET gbk;
库的删除
DROP DATABASE books;
DROP DATABASE IF EXIT books;
表的创建:
CREATE TABLE 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
...
列名 列的类型【(长度) 约束】
)
CREATE DATABASE books; use books; CREATE TABLE book( id INT,#编号 bName varchar(20),#图书名 price DOUBLE,#价格 authorId INT,#作者编号 publicDate DATETIME#出版日期 ); desc book; CREATE TABLE author( authorId INT, authorName varchar(20), nation VARCHAR(10) ); desc author;
表的修改:
ALTER TABLE 表名 add|drop|modify|change COLUMN 列名 【列类型 约束】
1.修改表名
ALTER TABLE book CHANGE COLUMN publicDate pubDate DATETIME;
2.修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;
3.添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;
4.删除列
ALTER TABLE author DROP COLUMN annual;
5.修改表名
ALTER TABLE author RENAME TO book_author;
#通用的写法
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 新表名;
#表的复制
#1.仅仅复制表的结构
CREATE TABLE copy LIKE author;
#2.复制表的机构+数据
CREATE TABLE copy2 SELECT * FROM author;
#3.只复制部分数据
CREATE TABLE copy3 SELECT id,au_name,nation FROM author WHERE nation ='中国';
#4.仅仅复制某些字段
CREATE TABLE copy4 SELECT id, au_name FROM author where 1=2;
常见的数据类型:
数值型:
整型
分类:
tinyint, smallint, mediumint,int/integer,bigint
1 2 3 4 8
特点:
1.如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
2.如果插入的数值超出了整型的范围,会报out of range异常,并且会插入临界值。
3.如果不设置长度,会有默认的长度
长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用。
小数:
1.浮点型
float(M,D)
double(M,D)
2.定点型(精度比浮点型更高)
dec(M,D)
decimal(M,D)
特点:
1.
M代表的是整数部位+小数部位
D:小数部位
如果超过范围,则插入临界值。
2.M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float或double,则会根据插入的数值的精度来决定精度。
3.定点型的精确度较高,如果要求插入的数值精度较高如货币运算则考虑使用定点型
原则:
所选择的类型越简单越好,能保存的数值的类型越小越好(占据更少的内存空间)
字符型:
较短的文本:char、varchar
较长的文本:text、blob(较长的二进制数据)
其他:binary 和varbinary用语保存较短的二进制
enum用于保存枚举
set用于保存集合
枚举 Enum类型
create table tab_char( c1 enum('a','b','c') ); insert into tab_char values('a'); insert into tab_char values('b'); insert into tab_char values('c'); insert into tab_char values('M');//无效,插入失败 insert into tab_char values('A');//插入成功 select * from tab_char;
Set类型
create table tab_set( s1 set('a','b','c','d','e') ); select * from tab_set; insert into tab_set values('a'); insert into tab_set values('A,B,C'); insert into tab_set values('E,D,A,B');
日期类型
分类:
date 只保存日期
time 只保存时间
year 只保存年
datetime 保存日期+时间
timestamp 保存日期+时间
特点: