MySQL基本操作

数据库操作指令都由';'结尾,代表执行命令,不加分号换行表示继续写。

SQL语言(结构化查询语言)

SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如create drop alter
-- create  用于创建数据库,创建表,创建视图
-- drop    用于删除数据库,删除表,删除视图
-- alter    用于修改表的定义,修改视图的定义
2、DML语句    数据库操纵语言: 插入数据insert、删除数据delete、更新数据update、查询数据select
-- insert   用于插入数据
-- update 用于更新数据
-- delete  用于删除数据
-- select  用于查询数据
3、DCL语句    数据库控制语言: 例如控制用户的访问权限grant、revoke
-- grant   用于给用户增加权限
-- revoke 用于收回用户权限

查看当前用户下所有数据库名称

show databases;

查看数据库创建信息

show create database 表名;

查看当前位于那个数据库下

select database()

切换数据库

use db -- 切换到db数据库

创建数据库

create database db1 -- 创建一个名为db1的数据库,默认编码为utf8
-- 创建时设置编码,db1为新建库名
create database db1 default character set=utf8

删除数据库

drop database db -- 删除名为db的数据库,如果这个数据库不存在,就会报错
drop database if exists db -- 就算db不存在,也不会报错

导出现有数据库数据:

mysqldump -u用户名 -p密码 数据库名称 >导出文件路径          --  结构+数据
mysqldump -u用户名 -p密码 -d 数据库名称 >导出文件路径      -- 结构 

导入现有数据库数据

mysqldump -uroot -p密码  数据库名称 < 文件路径  

修改数据库的字符集

ALTER DATABASE 库名 CHARACTER SET utf8 COLLATE utf8_general_ci;

  

操作表

建表

create table 表名(列名 对应值的类型(对应值的长度) not null(是否可以为空,默认为可以为空) 
          primary key(设置为主键,不能重复,不可为空),列名 对应值类型(对应值长度))
          ENGINE=MYISAM -- 设置搜索引擎,默认innodb
          DEFAULT CHARSET=utf8; -- 设置编码方式,默认utf8
-- 条件AUTO_INCREMENT主键自增

查看表结构

desc 表名;
describe 表名;
show create table 表名; -- 查看表的创建信息

修改表名

alter table 表名 rename 新表名;

增加字段

alter table 表名 add 字段名 数据类型 约束条件,
                       add 字段名 数据类型 约束条件; -- 添加多列逗号隔开

alter table 表名 add 字段名 数据类型 约束条件 first; -- 添加在开头
alter table 表名 add 字段1 数据类型 约束条件 after 字段2; -- 将字段1 加在字段2后

删除字段

alter table 表名 drop 字段名;

修改字段

alter table 表名 modify 字段名 数据类型 约束条件; -- 可以用来修改数据类型和约束条件,要写全
 --列名称修改,也可以用来修改约束条件
 alter table 表名 change 原列名 新列名 类型 [约束条件];

-- 给字段增加约束条件
alter table 表名 alter column 字段 set 约束条件;

删除表

drop table 表名;

修改表的搜索引擎

alter table '表名' engine = 引擎

 拷贝表

create table 表名 select * from 库.表; -- 创建表的时候使用另一个表的数据
-- 只拷贝表的结构,不拷贝数据
create table 表名 select * from 库.表 where 1=2; -- 设置一个不成立的条件,查不到数据

操作数据

添加数据

insert into 表名(列名,多个列名逗号隔开) values ('值','与列名一一对应'),
                          ('可以一次添加多行','与之前逗号隔开')

删除数据

delete from 表名 where 条件and条件 -- 会删除所有满足条件的行 

清空数据

delete from 表名
truncate table 表名
-- 区别
-- 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。
-- 效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
-- delete的效果有点像将mysql表中所有记录一条一条删除到删完,
-- 而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

修改数据

update 表名 set 列名=新的值 where 条件 -- 多个条件用and连接

查表

select 要查的列名,逗号隔开,*代表所有列 from 表名 -- 查全部
-- 还可以根据条件查
select 要查的列名,逗号隔开,*代表所有列 from 表名 where 条件

 使用as给查询的结果字段取别名

selec name as “姓名” ,sex as "性别" from user
select u.name as “姓名”,o.name as "英文名" ,u.sex as "性别" from user u ,other o where u.id = o.id;
-- 其目的是让查询的结果展现更符合人们观看习惯,在多张表查询的时候可以直接的区别多张表的同名的字段。

 条件

-- 条件之中有比较
>,<,=,<>,>=,<=
-- 多个条件连接使用逻辑运算符
and 表示并且。or 表示或
-- 模糊查询 列名 like '%'
'%s' 表示以s结尾 
's%' 表示以s开头
'%s%' 表示包含s
-- 查询列名对应值是某几个的:
        列名 in (值得集合)
-- 查询列名对应值不是某几个的:
        列名 not in (值得集合)
-- 范围查询
列名 between x and y   ==  列名>=x and 列名<=y

关于null:

  当null位于条件语句时使用:字段 is null

  null 作为值进行修改时 : 字段 = null

排序:  排序一定要放到最后,是先取到结果在进行排序

当以两个条件排序时,会先按照第一个条件进行排序,将相同的值按第二个进行排序

order by 列名 asc -- 根据某列进行排序,asc是默认值,正序(从小到大)
order by 列名 desc -- 反序(从大到小)
-- 排序前可以加条件,是对满足条件的进行排序

嵌套查询:一个查询的结果作为另一个查询的条件

 

posted @ 2017-12-07 16:48  瓜田月夜  阅读(148)  评论(0)    收藏  举报