Mysql基础(三)

#DML语言
/*
    数据操作语言
        插入:insert
                insert into 表名(列名,...) values(值1,...);
                insert into 表名  set 列名=值, 列名=值,...
                
        修改:update
        删除:delete
*/

CREATE TABLE beauty(
id  INT(11) PRIMARY KEY,
`name` VARCHAR(50),
sex CHAR(1),
borndate DATETIME,
phone VARCHAR(11),
photo BLOB,
boyfriend_id INT(11)
);
##插入方式一:
SELECT * FROM beauty;
-- 1.插入值的类型要与列的类型一直或兼容

-- 2.不可以为null的列必须插入值,可以为null的类如何插入值
-- 方式1
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(13,'何苗','','1995-2-4','13466561321',NULL,2);
-- 方式2
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUE(15,'雨洁','','1996-6-4','13436561651',2);

-- 3.列数和值的个数一致且对应
-- 可以省略。默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty 
VALUES(16,'芳芳','',NULL,'23345469858',NULL,NULL);

##插入方式二:
-- 
INSERT INTO beauty SET id = 19, NAME = '琳琳',phone = '999';

SELECT *FROM beauty;

-- 两种方式pk
-- 方式一支持批量插入多行,方式二不支持
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUE(22,'何苗','','1995-2-4','13466561321',NULL,2),
     (20,'何苗','','1995-2-4','13466561321',NULL,2),
     (21,'何苗','','1995-2-4','13466561321',NULL,2);
     
-- 方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 26,'colin','2332432534';

 

##修改语句
/*
1.修改单表的记录
    语法:
        update  表名  set列=新值, 列=新值, ... where 筛选条件
        
2.修改多表的记录
    语法:
        sql192语法:
            update 表1  别名, 表2 别名  set 列=值, ...  where 连接条件  and 筛选条件;
            
        sql199语法:
            update 表1,别名 inner|left|right join  表2  别名 on 连接条件 set 列=值, ...
            where 筛选条件;    
             
*/
 
-- 修改beayty表中姓 琳 的电话号码为888
UPDATE beauty SET phone = '888'
WHERE `name` LIKE '琳琳';


##删除语句
/*
方式一:delete
    1.单表的删除
      delete from 表名 where 筛选条件

    2.多表的删除
          sql192
              delete 表1的别名,表2的别名
              from表1 别名,  表2  别名
              where 连接条件
              and   筛选条件;
          sql199
              delete 表1的别名 ,表2的表名
              from 表1,别名
              inner|left|right  join 表2 别名 on 连接条件      、
              where 筛选条件;              
    
方式二: truncate
    语法:truncate table 表名;
    
truncate和delete区别:①假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,
                        而truncate删除后,再插入数据,自增长的值从1开始。
                     ②truncate删除没有返回值,delete删除有返回值
                     ③truncate删除不能回滚,delete删除可以回滚                           
*/

-- 删除手机号4结尾的信息
DELETE FROM  beauty 
WHERE phone LIKE '%4';

##truncate  清空数据
TRUNCATE TABLE beauty;

 

#DDL
/*
数据定义语言
库和表的管理
      1.库的管理:
              创建,修改,删除
      
      2.表的修改
              创建,修改,删除 
创建: create
修改: alter
删除: drop                     
*/

##库的管理
-- 1.创建库
CREATE DATABASE IF NOT EXISTS 库民;

-- 2.库名的修改,直接找文件修改,一般库不做修改,

-- 更改库的字符集
ALTER DATABASE 库名  CHARACTER SET gbk;

-- 库的删除
DROP  DATABASE IF EXISTS 库名;


##表的管理
-- 表的创建
/*
create  table 表名(
      列名  列的类型(长度)约束,
      列名  列的类型(长度)约束,
      ...
      列名  列的类型(长度)约束
);
*/
-- 1.创建表Book
CREATE TABLE Book(
       Id INT,
       bName VARCHAR(20),
       price DOUBLE,
       authorId VARCHAR(20), 
       publishDate DATETIME,
       nation VARCHAR(20)
);

DESC Book;
SELECT * FROM Book;

-- 2.表的修改:
/*
         ①改列名     CHANGE COLUMN 
         ②修改列的类型或约束   MODIFY COLUMN publ TIMESTAMP;
         ③添加新列   ADD COLUMN 
alter table 表名 add column列名 类型 first|after 字段字段名; ④删除列 DROP COLUMN ⑤修改表名 RENAME TO
*/ ALTER TABLE book CHANGE COLUMN pubDate publ DATETIME; ALTER TABLE Book MODIFY COLUMN publ TIMESTAMP; ALTER TABLE Book ADD COLUMN page INT ;
ALTER TABLE Book ADD COLUMN AA INT AFTER price;
ALTER TABLE Book DROP COLUMN page; ALTER TABLE Book RENAME TO book_ac; DESC book_ac; ##表的删除 DROP TABLE IF EXISTS book_ac; #表的复制 -- 1.仅仅复制表的结构 CREATE TABLE copy LIKE book_ac; -- 2.复制表的结构+数据 CREATE TABLE copy2 SELECT * FROM book_ac; -- 3.只复制部分数据 CREATE TABLE copy3 SELECT id,price FROM book_ac WHERE nation = '中国'; -- 4.仅仅复制某些字段 CREATE TABLE copy4 SELECT id,price FROM book_ac WHERE 1=3;

 

## 常见的数据类型

/*
数值型:
    整型:       tinyint  smallint   mediumint   int/integer  bigint
                 1字节    2字节      3字节       4字节        8字节
          特点:① 如果不设置无符号还是有符号,默认的是有符号,
                  如果想设置无符号,需要添加unsigned关键字
               ② 如果插入的数值超过整型的范围,回报out of rang异常,
                  并且插入临界值.
               ③ 如果不设置长度,会有默认的长度,长度代表显示的最大宽度
                  如果不够会用0在左边填充,但必须搭配zerofill使用
    小数:
        浮点型:    
               float(M,D)
               double(M,D)     
        定点数:
               dec(M,D)
               decimal(M,D)
         特点:① M代表整数部位 + 小数部位,D代表小数部位个数,如果超过范围,插入临界值
              ② M和D都可以省略,如果是decimal,则M默认为10,D默认为0
                 如果是float和double,则会根据插入的数值的精度来决定精度
              ③ 定点型的精度 较高,如果要求插入数值的精度较高,
                  如货币运算符则考虑使用
         
              
字符型:
      较短的文本:char(M)    M默认为1,可省略  固定长度的长度  空间的耗费比较耗费  效率高
                varchar(M) 不可以省略       可变的长度     空间耗费高        效率低
其他 enum 用于保存枚举 set 用于保存集合 较长的文本: text blob(较长的二进制数据) 日期型: 字节 范围 受时区的影响 date 只保存=日期 time 只保存时间 year 只保存年 datetime 保存日期+时间 8 1000-9999 不受 timestamp 保存日期+时间 4 1970-2028 受
*/ -- 原则:多选择的类型越简单越好,能保存数值的类型越小越好

 

posted @ 2020-04-08 23:53  林淼零  阅读(141)  评论(0编辑  收藏  举报