#mysql -uroot -p12345678
-u mysql用户 -p 密码 (这里可以先不输入密码,回车后输入密码,安全)
进入到mysql> 环境下,先创建一个数据库。当然mysql支持多库管理,也可以创建多个数据库
#create database 数据库;
创建完数据库,使用该命令进行查看。这里是databases 不是database哦!
#show databases;
当删除该库时,其中所有的表,记录等数据全部会被删除。
#drop database 数据库;
当有了库这个容器,就要有表,表中包含字段,字段下有数据记录。看下图就容易理解了。
#use 数据库名; //进入数据库 #create table 表名( //创建表 字段名 类型(长度), 字段名 类型(长度) );
创建表明时,每个字段之间需要用 “,” 隔开。最后一个字段不需要 “,”。
#show tables; //查看都有哪些数据表 #describe 库名.表名; //查看某个表的具体结构
#alter table 旧表明 rename 新表名; //修改数据表名称
字段的修改
#alter table 表名 change 旧属性名 新属性名 新数据类型; //修改字段名称 #alter table 表名 modify 属性名 数据类型; //修改字段类型 #alter table 表名 add 属性名 数据类型; //增加字段 #alter table 表名 drop 属性名;//删除字段
例:
#alter table mingdan change name names_ text(8); #alter table mingdan modify sex char(2); #alter table mingdan add tall int(3); #alter table mingdan drop tall;
方法1:
#use 数据库名; #drop 表名;
方法2:
#drop table 数据库名.表名;
#create user 'username'@'host' identified by 'password';
username:创建用户的名称
host:指定该用户在哪个平台主机上登录。如果是本地可以用localhost。如果是远程可以用通配符"%"。
password:表示用户的登录密码。可以为空
例:
#create user 'user1'@'localhost' identified by '12345678';
创建一个id为user1的用户,只能在本地登录,密码为 12345678。
用户名后面需要带上登录形式哦!
#drop user 'username'@'host';
#grant 操作权限 On 数据库名.表名 to 'username'@'host';
操作权限:select,insert,update等。如果要给全部权限用all
数据库名.表名:如果要授权全部数据库和表名,可以用“.”。同理,liao1.* liao1库下全部表
例:
#grant all on menu.* to 'user1'@'localhost';
给予本地登录的user1用户,menu库所有表的全部权限
#revoke 操作权限 on 数据库名.表名 from 'username'@'host';
#set password for 'username'@'host' = password('新密码');
例:
#set password for 'user1'@'localhost' = password('liao118235');
设置本地登录的user1用户的密码为:liao118235
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
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) | 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 | 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 | 极大文本数据 |
SET 能存储0-64个成员。存储空间1-8kb。
前面创建了库和表,还没搞数据呢!现在就开始插入数据。
#insert into 表名 values (值1,值2......);
注意,这里表名中有多少字段,后面就输入多少个值。也可以指定字段添加。那些没添加值的字段,数据为null,也就是空!空 != 0;
#insert into 表名(列1,列2....) values(值1,值2......),(值1,值2......),(值1,值2......);
当然,也可以指定表名的某几列进行插入指定值,以“,”隔开,也能一次添加多个。
#update 表名 set 列名 = 新值 where 列名 = 某值。
列名=新值:是要修改的数值。当然,数据难免会出现重复的现象,所以以该列的某个字段进行对比修改。就能极大的避免这个情况。
在name为liao的记录中,money的数值改为2500。
#update 表1,表2, ... set 表1.列1, 表2.列2 ... where 条件;
当然也可以多个命令同时修改!
#delete from 表名 where 列名 = 值; //删除单个 #delete 表1,表2..... from 表1,表2.... where 条件; //删除多个记录
#select 字段 from 表名;
查询表的全部字段和部分字段。
where语句是用来定义查询条件的,有几个注意事项
where可以指定任何条件
where的条件可以是多个,用and和or连接。and是和,是全部符合条件,也就是&&。or是或者,满足一个即可,也就是||。
所以where有点类似if条件语句,比较运算符都可以使用!!!
#select 字段 from 表名 wherer 条件;
查询mingdan表中,age=17的数据。
用于合并两个或多个查询语句,有时候我们要查询的表不止一个,但是要查的数据类型都是一样的。所以我们可以使用union。
union。查询时会删除重复的结果记录。
#select 条件 from 表1 #union #select 条件 from 表2;
union all。查询时则不会删除
#select 条件 from 表1 #union all #select 条件 from 表2;
单个查询时的不重复查询。重复的则不显示。
#select distinct 字段 form 表名;
有时候,我们可能知道某个数据中有某个值,但是不知道它的完整数值。
#select 字段 from 表名 where 字段 like 值;
查询name里带有7的数据
%:关键词查找。%123%,%芜湖~% :匹配查找。__a:查找四位,并且第三位为a的数据。
类似查成绩,工资一些数字类型的数据。需要进行排序。
#select 字段 from 表名 where 条件 order by 记录1 desc/asc, 记录2 desc/asc,....;
desc:降序 asc:升序 注意:条件语句是可加可不加的!不要迷了
查询mingdan表下,money的降序,年龄的升序排列。品一品其中的排序方式和优先级!
有时候需要返回前后几条或者中间的某几行数据。
#select 字段 limit 起始偏移量,行数;
查询mingdan表中以money的降序排列的2到4个数据
注意这里是以0开头的哦!
#select 字段 聚合函数 from 表名 where 条件 group by 记录1,记录2 .... with rollup having 条件;
group by :需要聚合的字段 with rollup:是否对分类聚合进行汇总。这个是可选的
查询mingdan表中,最大的money数值。
查询mingdan表中,以age字段查询(第二个age),age小于20的数据(第三个age),只显示age(第一个age)。
创建了个新的表,id对应的是年龄。
查询mingdan的name字段和jobs的working字段,条件是 mingdan的age = jobs的id。
也就是,将age数据和id数据相同的,列出来。
以左边表的数据为基准,去匹配右边表的数据。