初入MYSQL,mysql常用命令

数据库操作

  • 创建数据库
(1)create  database  数据库名;--如果数据库名存在,ERROR 1007 (HY000): Can't create database 'scott'; database exists
(2)create database if exists  数据路名;--将会避免出现ERROR 1007,数据库不会被创建
(3)create database 数据名 character set  utf8 collate utf8_general_ci --创建utf-8编码数据库

使用 show create databases 数据库名查看创建数据库的过程

  • 删除数据库
(1)drop database 数据库名;--如果数据库不存在,将会出现ERROR 1008 (HY000): Can't drop database 'ss'; database doesn't exist
(2)drop database if exists 数据库名;--如果数据库存在,就执行删除,如果数据库不存在,也可避免ERROR 1008的错误
  • 显示当前登录用户已创建的数据库
show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| ajax_stuff |
| Baseball |
+---------------------+
  • 在当前登录用户切换数据库
use 数据库名;

只有转到具体的数据库下才能进行该数据库中表的操作

创建用户

create  user  ‘lisi’@'%' identified by '123456';
-- 创建一个用户名为lisi密码位123456的账户,%是通配符,代表任何IP都可登录
create user 'zhangsan'@'192.168.1.12' identified by 'abc123'
-- 该用户只能在指定的ip地址下登录

新创建的用户没有任何权限,需要授权(grant)才能使用
新创建的用户存在数据库自带mysql数据库的user表中。

  • 为创建的用户授权
grant  all on test.* to 'zhangsan'@'192.168.1.12';
-- 将test数据库的所有权限授予'zhangsan'@'192.168.1.12'用户
grant select on test,* to ‘lisi’@'%' identified by '123456',
-- 该用户只有对test数据库查询的权限

使用**show grants for ‘lisi’@’%’;**查看为某个用户授予了那些权限。

show grants for 'root'@'%';-- 结果如下:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE 
USER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*00A51F3F48415C7D4E8908980D443C29C69B60C9' WITH GRANT OPTION
  • MYSQL中的注释:
# 单行注释
--  单行注释,--与注释内容之间有空格
/* 行内数值*/
/*
多行注释
*/

表的操作

  • 创建表
1、
create table  TABLE_NAME
(
	变量名 数据类型 ,
	变量名 数据类型 
)
create table studentIfo
(
	stuId int primary key,  --为该字段添加唯一约束
	stuName varchar(20) not null, --为该字段添加非空约束 
	age int,
	sex char default '男' --为该字段添加默认值
)
2、基于现有表创建新表,创建只有stuId 与stuName两列的空表
--该方式创建的表不会复制表中的约束,studentInfo中第一列有主键约束,新创建的表中第一列没有主键约束。
-- 如where条件满足,会将满足条件的数据一同插入新创建的表中,1>2是不成立的条件,因此只有表结构,没有数据。
-- 新表中列名 数据类型与原表中对应列一致
create table studentInfo2 select  stuId,stuName from studentInfo where 1>2; 

sql语句不区分大小写,但建议大写,表名字段名小写,使两者更好的区分(我太懒了,就都用小写啦!)

  • 修改表
    修改表名 :alter table 表名 rename 新表名;
    增加字段:alter table 表名 add 新列名 数据类型 [first|after];
    first 表示在表的第一个位置插入列,after表的最后插如新的列,也可不带条件。
    删除列:alter table 表名 drop 列名;
    修改字段数据类型:alter table 表名 modify 列名 新的数据类型;
    修改字段名:alter table 表名 change 旧列名 新列明;
    同时修改列名与数据类型:alter table 表名 change 旧列名 新列名 新的数据类型
    查看表的详细定义:show create table 表名;
    添加主键约束:alter table 表名 add constraint primary key(列1[,列2,...]);
    添加唯一约束:alter table add constraint unique(列1[,列2]);

1、为表中的列添加主键时出现ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’ 已存在的数据中该列数据已经重复,删除重复数据之后再添加主键
2、 一个表中只能有一个主键,一个主键可以包含多列.
3、主键约束:唯一、不为空
4、唯一约束:唯一、可以有多个空值。

  • insert
(1)insert into 表名(参数列表) values (值列表)
	INSERT INTO `table_name` (`field_one`, `field_two`) VALUES ('value_one', 'value_two');
-- 多行插入,使用的是由参数列表的格式插入数据
	INSERT INTO `my_table` (`field_1`, `field_2`) VALUES
	('data_1', 'data_2'),
	('data_1', 'data_3'),
	('data_4', 'data_5');
(2)insert into 表名  values(  value1,value2,...);
(3)从现有的表中向新创建的表中插入数据
	INSERT INTO `tableA` (`field_one`, `field_two`)
	SELECT `tableB`.`field_one`, `tableB`.`field_two`
	FROM `tableB`
	WHERE `tableB`.clmn <> 'someValue'
	ORDER BY `tableB`.`sorting_clmn`;
  • ` ` :[tab]键上边的反引号,引主字段名或表名,当表名或字段名是中有空格或通配符时,需要使用反引号括住。
  • 省略参数列表的时,值的顺序必须按照表中的字段顺序、数据类型依次插入,没有值时采用null替代,默认值用default替代。
  • 从现有的表中插入数据时,有数据的表与新创建表的列、数据类型必须匹配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值