回顾总结19

MySQL数据库

  1. 安装Mysql数据库,是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库,DBMS(database manage system)
  2. 一个数据库中可以创建多个表,以保存数据(信息)
  3. 数据库管理系统DBMS,数据库和表的关系

开启和关闭sql服务

开启

net start mysql

关闭

net stop mysql

进入数据库

mysql -u root -p

SQL语句分类

DDL

数据定义语句:create 表,库...

DML

数据操作语句:增加 insert,修改 update,删除 delete

DQL

数据查询语句:select

DCL

数据控制语句:管理数据库,如用户权限的撤销 grant revoke

数据库语句

  1. [DEFAULT] CHARACTRE SET:指定数据库采用的字符集,如果不指定字符集,默认utf8
  2. [DEFAULT] COLLATE :指定数据库字符集的校对规则。(常用的 utf8_bin[区分大小写]、utf8_general_ci[不区分大小写]。默认是utf_general_ci

创建

CREATE DATABASE [IF NOT EXISTS] db_name

删除

DROP DATABASE [IF EXISTS] db_name

备份

备份数据库

需要Dos命令,调用bin目录下的mysqldump程序执行

mysqldump -u root -p -B 数据库名称 > "需要保存到的文件位置目录.sql"

这里面备份的都是数据库语句,包括你创建数据库,修改数据等一系列操作的数据库语句

备份数据库下的表

mysqldump -u root -p 数据库名 表1 表2 表n > "需要保存到的文件位置目录.sql"

恢复

需要dos命令进入DBMS的mysql命令行,使用source "需要导入的文件位置目录.sql"

表语句

创建create

CREATE TABLE table_name(
    field1 datatype,
    field2 datatype,
    field3 datatype
)
character set:字符集 不指定则为数据库字符集
collate:校对规则 不指定则为数据库校对规则
engine:存储引擎
field:指定列名
datatype:指定列类型(字段类型)

增加insert

INSERT INTO table_name (column,......)

VALUES (value,......)

如果添加一条完整数据,可以不写列名。

如果添加残缺数据,需要写对应列名。

details

  1. 插入的数据应与字段的数据类型相同
    比如把'abc'添加到int类型会错误,但是'123'可以,因为sql会尝试把字符串转换成int型
  2. 数据的长度应在列的规定范围内
    不能将一个长度为80的字符串加入到长度为40的列中
  3. 在values中列出的数据位置必须与被加入的列的排列位置相对应
  4. 字符和日期型数据应包含在单引号中
  5. 列可以插入空值【前提是该字段允许为空】,INSERT INTO TABLE VALUE(null)
  6. INSERT INTO table_name (column...)VALUES (),(),() 形式添加多条记录
  7. 如果是给表中的所有字段添加数据,可以不写前面的字段名称
  8. 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错

修改update

UPDATE table_name SET salary = 5000
如果没有带WHERE条件,会修改所有的记录,因此要慎重

UPDATE table_name SET salary = 3000 WHERE user_name ='小妖怪'
只有user_name值为'小妖怪'的数据的salary会被修改

details

  1. UPDATE语法可以用新值更新原有表行中的各列
  2. SET子句指示要修改哪些列和要给予哪些值
  3. WHERE子句指定应更新那些行,如没有WHERE子句,则更新所有行
  4. 如果需要修改多个字段,可以通过set字段1 = 值1,字段2 =值2...

补充:
修改表名:RENAME TABLE 表名 TO 新表名
修改表字符集:ALTER TABLE 表名 CHARACTER SET 字符集

删除delete

DELETE FROM table_name WHERE user_name = '小妖盖';

details

  1. 如果不使用where子句,将删除表中所有数据
  2. delete语句不能删除某一列的值。操作的基本单位是一条数据
    删除一条数据中的具体列的值,可以使用update将其设为null或''
  3. 使用delete语句仅删除记录,不删除表本身
    如果要删除表,使用drop table语句,drop table 表名
    如果删除表中的某一列使用alter table 表名 drop 列名

查询select

SELETE [DISTINCT] * || {column ...} FROM table_name

SELECT:指定查询那些列的数据
DISTINCT:可选,指显示结果时,是否去掉重复数据
*:代表查询所有列
column:指定列名
FROM:指定查询哪张表

where运算符

比较运算符

  1. <,<=,>=,=,<>,!=,>:小于,小于等于,大于等于,等于,不等于,不等于,大于
  2. BETWEEN ... AND ... :显示在某一区间的值
  3. IN(set):显示在in列表中的值,如in(100,200),100或者200
  4. LIKE '张pattern'
    NOT LIKE '':模糊查询
  5. IS NULL:判断是否为空

逻辑运算符

  1. and:多个条件同时成立
  2. or:多个条件任一成立
  3. not:不成立,如where not (salary >100);

列语句

添加

ALTER TABLE table_name
ADD        (column datatype [DEFAULT expr]
           [, column datatype]...);

修改

ALTER TABLE table_name
MPDIFY     (column datatype [DEFAULT expr]
           [, column datatype]...);

删除

ALTER TABLE table_name
DROP       (column);
查看表的结构:desc 表名;--可以查看表的列

操作练习

增加一个image列,varchar类型,要求在resume后面
ALTER TABLE emp ADD image VARCHAR(32) AFTER resume
修改job列,长度为60
ALTER TABLE emp MODIFY job VARCHAR(60)
删除sex列
ALTER TABLE emp DROP sex
表名改为emploee
RENAME TABLE emp TO employee
修改表的字符集为utf8
ALTER TABLE emp CHARACTER SET utf8
列名name修改为user_name
ALTER TABLE emp CHANGE name user_name VARCHAR(20)

数据类型

数值类型

整数类型

默认为有符号

  1. tinyint[1字节] 8位表示 有符号范围是-128127,无符号是0255
  2. smallint[2字节] 16位 有符号范围是负的215~215-1,无符号是2^16-1
  3. mediumint[3字节] 24位 有符号范围是负的223~223-1,无符号是2^24-1
  4. int[4字节] 32位 有符号范围是负的231~231-1,无符号是2^32-1
  5. bigint[8字节] 64位 有符号范围是负的263~263-1,无符号是2^64-1
  6. bit[64位] 是以bit形式进行显示的。比如3存放的数据是'11'

小数类型

  1. float[4字节]的 32位。小数部分最多为4位
  2. double[8字节] 64位
  3. decimal[M,D],大小不确定,定点数M指定长度,D表示小数点的位数。M最大是65,D最大是30。M的默认值为10,D的默认值为0

文本类型

  1. char[0-255字符] 2^8-1 固定字符串长度,最大为255字符
  2. varchar[0-65535字节换算成的字符] 2^16-1 可变长度字符串 最大长度为65535字节 。其中一个记录字符长度占了1~2字节
  3. text[0-65535字符]2^16-1
  4. longtext[]2^32-1

details

  1. char和varchar后面参数代表的是字符数。不论是中文还是字母都可以放4个。

  2. char是固定字符大小。不足的字符以空格填充。如char(4),存放"学习"两个字符后,会填充2个字符的空格。

    varchar(4)是变长,如果插入了"学习"两个字符后,它会占用三个字符长度,记录字符长度的数据占一个字符,"学习"占两个字符。当字符超过255个时,记录字符长度的数据要占两个字符。

  3. 何时使用char和varchar

    • 如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等
    • 如果一个字段的长度是不确定,我们使用varchar,比如留言,文章

    查询速度 char > varchar

  4. 存放文本时,可以使用text数据类型,可以将text列视为varchar列,注意text不能有默认值,大小0~2^16字节,如果希望存放更多字符,可以选择,mediumtext 0~2^24 或者 longtext 0~2^32

二进制类型

  1. blob[2字节]2^16-1
  2. longblob[] 2^32-1

日期类型

  1. date[日期 年月日]3字节

  2. time[时间 时分秒]3字节

  3. datetime[年月日 时分秒]8字节

  4. timestamp[时间戳]4字节

    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :时间戳非空,默认当前时间,且随修改时间更新

posted @ 2021-08-30 11:32  灰线  阅读(59)  评论(0)    收藏  举报