新增
创建库
create database [库名];
创建表
create table userdata #userdata表明
(
phone bigint(20) NOT NULL primary key,
username varchar(30) NOT NULL,
userpwd varchar(30) NOT NULL,
mail varchar(50) NOT NULL,
sex char(2) NOT NULL,
birth date NOT NULL,
data datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
);
create table user
(
phone int NOT NULL primary key,
name varchar(11) NOT NULL
);
create table user_centent
(
phone int NOT NULL primary key,
centent varchar(100)
);
insert into user values(101,'user01');
insert into user values(102,'user02');
insert into user values(103,'user03');
insert into user values(104,'user04');
insert into user values(105,'user05');
insert into user_centent values(101,'centent01');
insert into user_centent values(102,'centent02');
insert into user_centent values(103,'centent03');
insert into user_centent values(104,'centent04');
insert into user_centent values(105,'centent05');
#NOT NULL 不许为空
#primary key 主键
#AUTO_INCREMENT 自增
#data datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' 按创建时间自动生成
遵循下列数据类型
数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 Bytes | (-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) | 0,(1.175 494 351 E-38,3.402 823 466 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 | 极大文本数据 |
插入数据
insert into [表名] values (数据1,数据2,数据3…);
插入指定列的数据
insert into [表名] (列1,列2,列3…)values (数据1,数据2,数据3…);
删除
删除库
drop database [库名];
删除表
drop table [表名];
删除表中某一项
DELETE FROM 表名 WHERE 字段名 = ‘参数’;
DELETE FROM 表名 WHERE 字段名1 = ‘参数’ AND 字段名2 = ‘参数’;
修改
mysql 修改表中某一列的值
update[表名] set [列名] = [新值] where [列名称] = [某值]
查询
查询所有数据库
show databases;
查询所有表
show tables;
查询指定表的数据结构
show create table [表名];
查询指定表中所有的数据
select * from [表名];
查询指定表中的指定列
select [列名1,列名2,…] from [表名];
查询指定列表名的其他对应数据
假如通过id查询content的数据
select [被查询列] from [表名] WHERE id=[id值];
查询按照日期排序
mySQL 里desc和asc的意思
- desc 是descend 降序意思
- asc 是ascend 升序意思
降序
select * from 表名 where true order by 排序列名 desc;
升序
select * from 表名 where true order by 排序列名 asc ;
查询指定条数数据
select * from 表明 limit 指定条数;
查询按照日期排序的前五条数据
select * from 表名 where true order by 要排序的字段名 desc limit 指定条数;
聚合查询(三种)
查询userdate中有多少个用户
select count(*) from userdata;
查询userdate中有多少个用户并已StundenNum表示
select count(*) AS StundenNum from userdata;
查询userdata中有多少个区号为86的用户
select count(*) AS 区号 from userdata qcellcore = 86;
分组聚合查询
查询不同城市中有多少个学生
select [字段名(相同)], count(*) from [表名] group by [字段名(相同)];
多表查询
select * from [表1],[表2];
(5 cols x 7 rows)*(2 cols x 3 rows) → (7 cols x 21 rows)
多表查询
select [字段1],[字段2] from [表1],[表2]where [表1].[相同字段] = [表2].[相同字段];
select name,centent from user,user_centent where user.phone = user_centent.phone;
连接查询(join)
select a.name,b.centent from [表名1] a join [表名2] b on a.phone=b.phone;
select a.name,b.centent from user a join user_centent b on a.phone=b.phone;
常见问题
mysql默认是不支持远程连接的
1.新创建一个用户
该用户可以从任何主机以密码123456远程访问MySQL
create` `user` `'root'``@``'%'` `identified ``by` `'123456'``;
如果报错 ERROR 1396 (HY000): Operation CREATE USER failed for ‘root’@‘%’ ,说明已经存在该用户对应主机,直接第三步授权
2.给用户最大授权
grant all privileges on *.* to 'root'@'%' identified by '123456';
3.刷新权限表 (最后不能忘记)
FLUSH PRIVILEGES; 刷新权限
在SQLyog中连接mysql8无法连接
原因是mysql8使用了新的加密方式,解决方法:windows 下cmd 登录 mysql -u root -p 登录你的 mysql 数据库,然后执行这条SQL:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
password 是你自己设置的root密码
在MySQL8中初始化数据库失败的原因
看看电脑名称是不是中文!!