Mysql基本语句
- 用户创建、权限、删除
1.1创建于数据库的连接
就像我们常用的Linux命令一样mysql也是可以通过命令来控制,连接mysql的命令连接
mysql -h 主机地址 -u 用户名 -p 用户密码
断开:exit (回车)
特别需要注意处于安全问题的考虑在登录mysql的时候,-p 参数之后并不是需要直接 加上密码而是直接敲ENTER 键 之后再下一行输入密码
1.2 创建用户:
命令:CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;
参数说明:
username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%。
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.
<h3>1.3为用户授权</h3>
命令:GRANT privileges ON databasename.tablename TO ‘username’@‘host’
参数说明:privileges - 用户的操作权限,如插入(INSERT),选择(SELECT) , 更新(UPDATE) 等.如果要授予所的权限则使用ALL.;
<h3>1.4撤销用户权限</h3>
命令: REVOKE privilege ON databasename.tablename FROM ‘username’@‘host’;
参数说明:同样给数据库加上增删改查的权限
<h3>1.5设置与更改用户密码</h3>
命令:SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);如果是当前登陆用户用SET PASSWORD = PASSWORD(“newpassword”);
1.6删除 用户
drop user
2 数据库与表显示、创建、删除
2.1查询、创建、删除数据库
创建数据库:Create database database_name
删除数据库:drop datebase databas_name
删库这种危险活动要谨慎哦!进入已经有的数据库:use database
2.2表的创建、查询与现实
查询已经有的数据库:Show tables;
在此之间应该使用use database 语句进入数据库
显示表的结构:desc 表名
创建表:Create table 表名 (字段设定);
CREATE TABLE student
(
studentId
varchar(255),
name
varchar(255) ,
age
INT,
address
varchar(100),
e-mail
varchar(100) ,
school_id
varchar(255) ,
PRIMARY KEY (studentId
),
KEY school_id
(school_id
)) ;ENGINE=InnoDB DEFAULT CHARSET=utf8;
删除表:drop table 表名;
查询(select)也是sql的重要操作,为了更好的说明问题
INSERT INTO student VALUES(1,'Tom',NOW(),'W',01);
INSERT INTO student VALUES(2,'Jack',NOW(),'M',02);
INSERT INTO student VALUES(3,'Blues',NOW(),'M',03);
INSERT INTO student VALUES(4,'Rose',NOW(),'W',04);
INSERT INTO student VALUES(5,'Kobe',NOW(),'W',05);
查询所有字段
SELECT * FROM Student
查询某几个字段
SELECT id ,NAME FROM Student
一定条件
SELECT id ,NAME FROM Student WHERE id>=3
将字段匿名
SELECT id AS '学号',NAME AS '姓名' FROM Student WHERE id>=3
## 约束
- 主键约束
- 外键约束
多表查询
除了单一表的查询之外往往需要多张表一起查询。让我们来看看下面的例子;
首先建立另一个school表
CREATE TABLE `school` (
`schoolId` varchar(255) ,
`schoolName` varchar(255),
PRIMARY KEY (`schoolId`)
);
内连接
SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
这样,我们就可以student表中的 name字段 和 school 表中的 schoolName字段 合并了起来。
外连接
与取得双方表中数据的内连接相比,外连接只能取得其中一方存在的数据,外连接又分为左连接和右连接两种情况。接下来,我们将介绍这两种连接方式。
左外连接
左连接是以左表为标准,只查询在左边表中存在的数据,当然需要两个表中的键值一致。语法如下
SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
SELECT
a.studentId, a.name ,b.schoolName
FROM
student a LEFT JOIN school b ON a.school_id =b.school_Id;
-- 以左表为基础则会显示左表中所有的元素。反之若是以右表为基础则那些没有设置学校id的同学不会被查询出来
右外连接
同理,右连接将会以右边作为基准,将两个表按照条件合并。语法如下:
SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
SELECT
a.studentId, b.school_Id, a.name ,b.schoolName
FROM student a Right JOIN school b ON a.school_id =b.school_Id;
-- 以右表为基础则会显示左表中所有的元素
子查询
通常我们在查询的SQL中嵌套查询,称为子查询。子查询通常会使复杂的查询变得简单,但是相关的子查询要对基础表的每一条数据都进行子查询的动作,所以当表单中数据过大时,一定要慎重选择。基本语法如下
SELECT 列名1 ...FROM 表名 WHERE 列名 比较运算符 (SELECT 命令);
SQL 中的Join
SQL left join 和 inner join 的区别