数据库简称DB,实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库上按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作。
SQL是结结构化查询语言,是一种用来操作RDBMS(关系型数据库管理系统)的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle, sql server, mysql等关系型数据库
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。
整数类型 | 有符号范围 | 无符号范围 |
---|---|---|
TINYINT(size) | -128~127 | 0~255 |
SMALLINT(size) | -32768~32767 | 0~65535 |
MEDIUMINT(size) | -8388608~8388607 | 0~16777215 |
INT(size) | -2147483648~2147483647 | 0~4294967295 |
BIGINT(size) | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
小数类型 | 描述 |
---|---|
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。(定点数类型) |
字符串类型 | 字节大小 | 示例 |
---|---|---|
CHAR(size) | 0-255 | char(3)输入’ab’,实际存储为’ab ‘,输入’abcd’,实际存储为’abc’ |
VARCHAR(size) | 0-65535 | varchar(3)输入’ab’,实际存储为’ab’,输入’abcd’,实际存储为’abc’ |
枚举类型英文为ENUM,对1255个成员的枚举需要1个字节存储;对于25565535个成员,需要2个字节存储。最多允许65535个成员。创建方式:enum(“M”,“F”);
数据类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’ |
DATETIME() | 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ |
TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |
YEAR() | 2 位或 4 位格式的年。4 位格式:1901 到 2155。2 位格式:70 到 69,表示从 1970 到 2069 |
TIMESTAMP() | 时间戳。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
注意
mysql -uroot -p
enter password : 密码
exit
quit
show databases;
select version()
注意
当创建的数据库的名字中含有``,直接使用create database 数据库名字;是不符合数据库创建的标准
当创建数据库中有数据库名字有单横线时,需要使用``将数据库名字进行包裹起来,如下
create database 数据库名字;
create database 数据库名字 charset=utf8;
create database `数据库名字`;
create database if not exists `数据库名字` charset=utf8;
show create database 数据库名;
select database();
use 数据库名字;
drop databases 数据库名字;
show tables;
create table 数据表名(字段 类型 约束[字段 类型 约束])
desc 数据表名
show create table 数据表名;
students
表(id、name、age、high、gender、cls_id)classes
表(id、name)-- students如下:
-- primary key : 主键
-- not null : 不允许为空
-- auto_increment : 自增
-- tinyint : 小整型
-- unsigned : 无符号的
-- default : 默认值
-- enum : 枚举类型
-- engine=InnoDB default charset=utf8 : 指定引擎和指定字符集编码
create table students(id int primary key not null auto_increment, name varchar(10), age tinyint unsigned default 18, high float(5,2), gender enum("男", "女", "保密") default "保密", cls_id int) engine=InnoDB default charset=utf8;
-- classess如下:
create table classes(id int primary key not null auto_increment, name varchar(30)) engine=InnoDB default charset=utf8;
alter table 数据表名 add 字段 类型
-- alter table classes add age tinyint;
-- 不重命名
alter table 数据表名 modify 字段 类型;
-- alter table classes modify age int;
-- 将字段重命名
alter table 数据表名 change 原字段名 新字段名 类型及约束;
-- alter table classes change age age_int tinyint;
alter table 数据表名 drop 字段;
-- alter table classes drop age_int;
• 添加字段
• 字段名称:birthday
• 字段类型:DATETIME
alter table classes add birthday datetime;
• 修改字段
• 字段类型:DATE
alter table classes modify birthday date;
• 修改字段
• 字段名称:birth
• 字段类型:DATE
alter table classes change brithday birth date;
• 删除该字段
alter table classes drop birth;
- 当使用整行插入数据时,必须要一一对应,否则将会出错,当ID为自增时,也是需要插入的,如下:
insert into 数据表名 values(值1,值2,值3);
insert into students values(1, "Small-J", 18, 175.12, '男', 1);
insert into tablename(字段1,字段2) values (值1,值2);
insert into students values(2,"Senven-J", 19, 175.15, '男', 2);
insert into tablename(字段1,字段2) values (值1,值2),(值1,值2);
insert into students(name, high, cls_id) values ('Small-J2', 178.12, 2);
-- students表中添加整行数据
insert into students values(1, "Small-J", 18, 175.12, '男', 1);
-- students表中添加name,gender两个字段的数据
insert into students (name, gender) values ('demo', 2);
-- students表中同时添加多行数据
insert into students (name, gender) values ('demo1', 3), ('demo2',2);
update 数据表名 set 字段1=新, 字段-新值[where 条件];
-- 将姓名全部修改为jack
update students set name="jack";
-- 将性别为女的名字修改为rose
update students set name="rose" where gender="女";
-- 将id为3的年龄修改为22,并且性别改为男
update students set age=22, gender="男" where id=3;
delete from 数据表名 [where 条件];
-- 将姓名为rose的数据删除
delete from students where name="rose";
-- 清空表数据
delete fromd students;
select * from 数据表名 -- 在实际应用开发中,不推荐使用
select 字段1,字段2 from 数据表名;
select name, gender from students;
select 字段1 as 别名, 字段2 as 别名 from 数据表名;
select name as "姓名", gender as "性别" from students;
select distinct 字段1 from 数据表名;
-- 查询students表所有数据
select * from students;
-- 查询students表中name与gender字段的数据
select name, gender from studnets;
查询students表中name字段的数据并且去重
select distinct name as "姓名" from students;