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 保存日期+时间

特点:

 

posted @ 2021-12-27 21:28  donkey8  阅读(32)  评论(0)    收藏  举报