数据库操作命令

数据库

!! 数据库是存储最外层

创建数据库:基本语法

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 表面(字段名 字段类型 [字段属性],....)
  1. 在数据表名字前面加上数据名字,用”.”连接即可,数据库.数据表
  2. 在创建数据表之前先进入到某个具体的数据库即可,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;

参考连接:https://blog.csdn.net/xycit/article/details/5854694


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!