登录Mysql:
Mysql -u root -p
密码:ss
C:\Users\Y7000>mysql -u root -p
Enter password: **
查看数据库:
Show databases;
创建数据库:
create database test;
mysql> create database test ;
Query OK, 1 row affected (0.02 sec)
进入数据库:
use test;
查看所有数据表:
show tables;
创建数据表:
Create table pet(
Name varchar(20), #varchar字符串
Owner varchar(20),
Species vachar(20),
Sex char(1), #char字符
Birth data, #日期型数据(字符串)
Death date);
查看单个数据表:
Describe pet;
查询数据表对象:
Select * from pet;
插入数据对象:
Insert into pet values(‘Pufball’,’Diane’,’hamster’,’f’,’9-3’,NULL);
mysql> INSERT INTO pet
-> VALUES('旺财','周星驰','狗','公','1990-10-11',NULL);
select * from pet;
Mysql 常用数据类型:(菜鸟教程)
–大致分为三类:数值,日期/时间,字符串(字符)类型
–数值
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 bytes | ( -9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38), | 0, (1.175 494 351 E-38,3.402 823 466 351 E+38) | 单精度 |
浮点数值 DOUBLE | 8 bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0, (2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 |
浮点数值DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
–日期和时间型
类型 | 大小 ( bytes) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
–字符串型:
类型 | 大小 | 用途 |
---|
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据
增删查改(CRUD)
增加:
insert into student values('2604','周立开','19数据A1','21','男','60');
删除:
delete from student where name = ‘周立开’;
查看:
Select * from student;
修改:
Update student set name =’丁培培’ where id = ‘2603’
Mysql建表约束:
–主键约束:(primary key)
它能够唯一确定一张表中的一条记录,通过给某个字段添加约束,可使改字段不重复且不为空。
Create table user(
Id int primary key,
name varchar(20)
);
Insert into user values(1,‘张三’);
Insert into user values(1,‘李四’); 报错
***id不可重复
联合主键:
Create table user2(
Id int,
Name varchar(20),
Pwd varchar(20),
Primary key(id,name)
);
******联合主键中两者加起来不能重复,任何一个字段不能为空
–自增约束(primary key auto_increment)
Create table user3(
Id int primary key auto_Increment, (自动添加主键id)
Name varchar(20)
);
Insert into user3(name) values(‘张三’);
如果建表时忘记创建自增约束:
Alter table s
alter table s4db65.class modify id int auto_increment;
alter table 数据库名.表名 modify 字段名 数据类型
*******如果字段被用做外键,则无法修改其自增约束*******
如果创建表时忘记创建主键约束:
Create table user4(
Id int,
Name varchar(20)
);
——添加主键约束:(alter table add)
Alter table user4 add primary key(id);
Describe user4;
——删除主键约束:
Alter table user4 drop primary key;
——修改modify修改字段,添加约束:
alter table user modify id int primary key;
–唯一约束:
约束修饰的字段的值不能重复
Create table user5(
Id int,
Name varchar(20)
);
Alter table user5 add unique(name);
Insert into user5 values(1,’zhanngsan’);
Desc user5 ****describe 的缩写
Create table user6(
Id int,
Name varchar(20),
Unique(name,id) ***类似联合主键,两者一起不能重复
);
——删除唯一约束
Alter table user6 drop index (name,id);
——modify 添加?
Alter table user6 modify name varchar(20)unique;
——总结约束的添加:
-- 1.建表时添加约束
-- 2.可以使用 alter 。。。add。。。
-- 3.使用alter。。。modify。。。
--4.删除 alter。。。drop。。。
–非空约束
修饰的字段不能为空NULL
Create table user9(
Id int,
Name varchar(20) not null
);
Insert into user9(id) values(1); ×
Insert into user9(name) values('zhangsan'); √
--默认约束(default) ***默认值
--当我们插入字段值时没有传值就会使用默认值;
Create table user10(
Id int,
Name varchar(20),
Age int default 10
);
Insert into user10(id,name) values(1,’zhangsan’);
alter table user10 modify name varchar(20) default 'lisi';
–外键约束:
涉及到两个表:父表,子表
主表,副表
******************************************************************
形式 :
主表(classes): id int primary key
副表(students): class_id int,
Foreign key(class_id) references classes(id)
--班级:
create table classes(
Id int primary key,
Name varchar(20)
);
--学生表:
create table students(
id int primary key,
Name varchar(20),
Class_id int,
Foreign key(class_id) references classes(id) #副表链接主表
);
Insert into classes values(1,’一班’);
Insert into classes values(2,‘二班’);
Insert into classes values(3,’三班’);
Insert into classes values(4,’四班’);
Insert into classes values(5,’五班’);
insert into students values(1001,'张三',1);
insert into students values(1006,'李四',6); ×
****主表中没有6班,所以报错
–1.主表classes中没有的数据值,在副表中是不可以使用的
–2.主表中的记录被副表引用,是不可以被删除的。
Delete from classes where id =4;