数据库操作命令
数据库
!! 数据库是存储最外层
创建数据库:基本语法
create database 数据库名字 [库选项];
create database 数据库名字 charset 字符集名称
- 库选项:数据库相关属性
- 字符集:charset 代表当前数据库下的所有表存储的数据默认指定的字符集(默认DBMS)
- 校对集: collate
显示数据库
- 每当用户通过SQL,系统会产生一个数据库
(data目录下) - 每个数据库文件下都有OPT文件,保存对应的数据库选项显示charset和collate
- mysql核心数据库:权限关系
- performance_schema:效率库
- test:测试:空库
指令查看数据库:
显示全部:show databases;
显示部分:show databases like '匹配模式':
- _:匹配当前位置单个字符
- %:匹配指定位置多个字符
- 获取以my开头的全部数据库:’my%’;
- 获取m开头,后i按第一个字符不确定,最后为database的数据库:’m_database’;
- 获取以database结尾的数据库:’%database’
显示数据库创建语句:
基本语法:show create database 数据库名字;(显示的语句被系统加工过并未被修改)
选择数据库
基本语法:use 数据库名字;
为什么要选择数据库?因为数据是存储到数据表,表存在数据库下,如果要操作数据,那么必须要进入到对应的数据库。
修改数据库
基本语法:alter database 数据库名字 charset=字符集;
修改数据库字符集(库选项):字符集和校对集
是否可以修改数据库名字?mysql5.5之前可以修改rename命令
删除数据库
基本语法:drop database 数据库名字;
删除虽简单,切记要做好安全操作,确保里面数据没有问题;
删除数据库之后,对应的文件夹也会删除,opt也会被删除
普通创建表
基本语法:create table 表面(字段名 字段类型 [字段属性],....)
- 在数据表名字前面加上数据名字,用”.”连接即可,数据库.数据表
- 在创建数据表之前先进入到某个具体的数据库即可,use 数据库名字
表选项:与数据库选项相类似
Engine:存储引擎,mysql提供的具体存储数据的方式,默认有一个innodb.
Charset:字符集,只有当签自己表有效(级别比数据库高)
Collate:校对集
复制已有表结构
基本语法: create table 表名 like 表名://只要使用数据库.表名,就可以在任何数据库下访问其他数据库的表
从已经存在的表复制一份(只复制结构,如果表中头数据不复制)
显示数据表(多维度显示表)
基本语法:show tables;
基本语法:show tables like 数据表;(匹配显示表)
基本语法:Describe 表名(Desc 表名;)
show columns from 表名;
(显示表结构:显示表中所包含的字段信息(名字,类型,属性))
基本语法:show create table 表名;
(显示表的创建语句:查看数据表创建时的语句,此鱼具看到的结构已经不是用户之前自己输入的)
- mysql多种语句结束符
;与\g所表示的效果一样,都是字段在上排横着,下面跟对应的数据
\G字段在左侧竖着,数据在右侧横着; - 每一张数据表创建,那么就会在对应的数据库下创建一些文件
- frm代表结构文件,结构文件来自于innodb存储引擎,innodb存储引擎所有的文件都存储在外部的ibdata 文件中(了解).
设置表属性
表属性就是表选项,charset engine collate
基本语法: alter table 表名 表选项【=】值;
注意:如果数据库已经确定了,里面有很多数据了,不要轻易修改表选项(字符集影响不大)
修改表结构
修改表名:rename table 旧表名 to 新表名;
新增字段:alter table 表名 add [column] 新字段名 列类型 [类属性] [位置 first]
字段位置:字段想要存放的位置
Frist:在某某之前()第一个字段
After 字段名:放在某个字段之后
修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型 [列属性] 【新位置】
修改字段类型:alter table 表名 modify 字段名 新类型 【新属性】 【新位置】
删除字段:alter table 表名 drop 字段名;
删除表结构
基本语法:drop table 表名[,表名2….];可以删除多个数据表
<——————————————————————————–>
-- 创建数据库
create DATABASE mydatabase;
create database mydatabase charset gbk;
show databases;
-- 修改数据库选项
alter database mydatabase charset gbk;
-- 删除数据库
drop database mydatabase;
-- 创建数据表
create table class(
-- 字段名 字段类型
-- 字段与表其实是分不开
-- 表必须放在对应的数据库下
name varchar(10) -- 10个字符(不能超过)
);
-- 将数据表挂到数据库下
create table mydatabase2.class(
name varchar(10)
);
-- 进入数据库,创建表
use mydatabase2;
create table teacher(
name varchar(10)
);
-- 使用表选项
create table student (
name varchar (10)
) charset utf8;
-- 在test数据库下创建一个与teacher一样的表
use test;
create table teacher like mydatabase2.teacher;
-- 查看所以表
show tables;
-- 显示表结构
describe class;
desc teacher;
show columns from studet;
-- 查看表创建语句
show create table class;
-- 修改表选项
alter table student charset gbk;
-- 数据库中数据名字通常由前缀,去数据库的前两个字符加上下划线
rename table student to my_student;
-- 给学生表增加age 字段
alter table my_student add column age int;
-- 增加字段:放到第一个字段
alter table my_student add id int first;
-- 修改字段名
alter table my_student change age nj int;
-- 修改字段类型
alter table my_student modify name varchar(20);
-- 删除字段
alter table my_student drop nj;
-- 删除表名
drop table class;
插入操作
本质含义,将数据以SQL的形式存储到指定的数据表(字段)
Insert into 表名 [(字段列表)] values;
Insert into 表名 values (对应表结构)//值列表必须与字段列表一致
查询操作
查询表中全部在数据:
select * from 表名;
查询表中部分字段:
select 字段列表 from 表名; //字段列表使用逗号隔开
简单条件查询数据:
select 字段列表/* from 表名 where 字段名=值;
删除操作
基本语法:delete from 表名 [where 条件];
//如果没有where条件,意味着系统会自动删除该表所有数据(慎用)
更新操作
更新:将数据进行修改(通常是修改部分字段数据)
基本语法:updata 表名 set 字段名 = 新值 [where 条件];//如果没有表中对应的那个字段都会被修改成统一值
-- 插入数据到数据表
create table my_teacher(
name varchar(10),
age int
);
insert into my_teacher (name,age) values('jack',30);
-- 无指定字段列表(必须与设定的表结构一样)
insert into my_teacher values('Lilei',28);
-- 获取所有数据
select * from my_teacher;
-- 获取指定字段数据
select name from my_teacher;
-- 获取年龄为30岁人的名字
select age from my_teacher where age = 30;
-- 删除年龄为30随的老师
delete from my_teacher where age = 30;
创建新用户
创建新用户:格式:grant select on 数据库.* to 用户名@登录主机 identified by /"密码/"
创建新用户在Internet上连接:grant select,insert,update,delete on *.* to test1@/"%/" Identified by /"abc/";
创建新用户在本机上连接:grant select,insert,update,delete on mydb.* to test2@localhost identified by /"abc/";
标准SQL匹配
“_”匹配任何单个字符
“%”匹配任意数目字符
匹配users表中的username列的以a开头的字段
匹配users表中的username列的以五个字符的的字段
标准正则表达式模式匹配
“.”匹配任何单个字符
“[...]”匹配括号内的任何字符
“[a-z]”匹配任何小写字母
[0-9]匹配任何数字
“*”匹配零个或多个在它前面的字符
zA-Z]匹配任何小写和大写的字母
“^”以某个字符开头
“$”以某个字符结尾
以a或A开头的字段
以n结尾的字段
模糊匹配五个字符
列的别名
Select * from users where username=”Dummy”;
为列命名
Select name as n,age as a from student order by n,a;
复制列字段到新的表
CREATE TABLE … SELECT
create table newusers select username as name,password as pwd from users;
表的别名
Select * from users as uss where us.username=”admin”;
取出互不相同的记录
DISTINCT关键字
Select distinct …..
全连接
select * from first,last where first.id=last.id;
左连接
Select * from first LEFT JOIN last ON first.id=last.id;
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!