MySQL数据库的常规操作

MySQL的常规操作

登录:mysql -uslp_linux -p 或 mysql -uroot -p (-h localhost)
密码:123

退出:exit
mysql设置外部访问权限时,除了把端口号改为0.0.0.0,以外,执行一下命令赋予权限:

开启服务:
net start mysql
关闭服务:
net stop mysql

>grant all privileges on *.* to '用户名'@'%' identified by '密码’with grant option;
>(>grant all privileges on *.* to 用户名@%;)
将数据读取到内存,立即生效: >flush privileges(更改配置(用户权限)之后,必须运行此命令生效)

用户

创建用户:	#允许hule用户在本地登录
		>create user 'hule'@'localhost' identified by '123456';
		#允许10.0.122.*网段使用hule用户登录
		>create user 'hule'@'10.0.122.%' identified by '123456';
		#允许用户在任何地方登录
		>create user 'hule'@'%' identified by '123456';
		>create user hule identified by '123456';
查看当前用户: >select user();
查看所有用户(需要root用户)>use mysql;
				 >select user,host from user;
删除用户:	>drop user '用户名'@'IP地址';
修改密码;  >set password for root@localhost = password('123');

授权管理:需要root用户
查看权限:show grants for ‘用户名’@‘IP地址’;
授权:grant 权限 on 数据库.表 to ‘用户名’@‘IP地址’;
#只能对axf数据库下的t1表进行查看和插入操作

>grant select,insert on axf.t1 to 'hule'@'%';
#只能对axf数据库下的所有表进行查看和插入操作
>grant select,insert on axf.* to 'hule'@'%';
#添加对axf数据库下所有表,添加grant以外的所有权限
>grant all privileges on test.* to hhh;
#添加对所有数据库下所有表,添加grant以外的所有权限
>grant all privileges on *.* to hhh;
#添加对所有数据库下所有表,添加包括grant的所有权限
>grant all privileges on *.* to hhh WITH GRANT OPTION
#权限说明:详情见《权限说明.txt》
#取消授权:
>revoke 权限 on 数据库.from '用户名'@'IP地址';
#更改用户可登录ip地址
>use mysql;
>update user set host='localhost' where user='root';

数据库

创建数据库:
#utf-8:
>create database 数据库名 charset utf8;
#gbk:
>create database 数据库名 default charset gbk;
>create database mydatabase;

显示所有数据库: >show databases;

修改数据库:alter database mydatabase charset gbk;(通常不修改)

删除数据库: >drop database 数据库名

查看当前选择的数据库: >select database();

查找记录: >select * from mysql.user;

切换工作数据库: >use 数据库名;

显示当前数据库中的所有表: >show tables;

【增】
创建表:CREATE TABLE table_name (column_name column_type);
	示例: >create table stu( 
    			id int not null auto_increment primary key, 
    			name char(20) unique, 
    			age int, 
    			class_id int, 
    			foreign key(class_id) references grade(id) 
		);
修改表: >alter table student modify name char(20) unique;
	 #如果想在一个已经建好的表中添加一列,可以用以下代码:
	 alter table 表名 add column 列名 varchar(20) not null;
	 >alter table student add column info2 varchar(100);

插入数据:

a、全列插入
        	格式:insert into 表名 values(...);
		示例:insert into student values(0,"tom",19,1,"北京",0);
		b、缺省插入
        	格式:insert into 表名(file1file2,……) values(1,2,……);		或插入多行 
insert into 表名(file1file2,……) values(1,2,……),(1,2,……),...;
		示例:insert into student(name,age,address) values("lilei",19,"上海");
		c、同时插入多条数据
        	格式:insert into 表名 values(...),(...),……
        	示例:insert into student values(0,"hanmeimei",18,0,"北京",0),
【删】
格式:delete from 表名 where 条件;  
    	示例:delete from student where id=4;
    	注意:没有条件是全部删除,慎用
删除一列: >alter table 表名 drop column 字段(列名);
【改】
格式:update 表名 set1=1,2=2,…… where 条件;
    	示例:update student set age=16 where id=7;  
    	注意:没有条件是全部列都修改,慎用
【查】
说明:查询表中的全部数据
    	格式:select * from 表名;
    	示例: select * from student;
 		select name, age from student;
 		select name as a, age from student;

1.条件查询
语法
select * from 表名 where 条件
a.比较运算符

等于=
大于>
小于<
大于等于>=
小于等于<=
不等于!=或<>

示例:

select * from student where id>8;

注意:
SQL 条件语句是经常用到 不等于!=的筛选条件,此时要注意此条件会将字段为null的数据也当做满足不等于的条件而将数据筛选掉。
只需将SQL 改为 :

select * from A where B1 != 1 or B1 is null ;

即可,不过目前我使用的方法还是:

select * from A where IFNULL(B1,'')  != 1;

b.逻辑运算符

and并且
or或者
not

c.模糊查询

	like
        		%表示任意多个任意字符
        		_表示一个任意字符
示例:	select * from student where name like "习%";
	select * from student where name like "习_";  
d.范围查询
in                表示在一个非连续的范围内
 		between...and...  表示在一个连续的范围内
	示例: select * from student where id in (8,10,12);
		select * from student where id between 6 and 8;
e. 空判断
注意:null与""是不同
 			 判断空:is null
  			 判断非空: is not null
	示例: select * from student where address is null;
		select * from student where address is not null;
f.优先级
小括号,not 比较运算符,逻辑运算符
       	 andor优先级高,如果同时出现并希望先选or,需要结合()来使用
	示例:select * from student where address is null and (name like "%		li" or age = 18);

2、聚合

	a、count(*)    表示计算总行数,括号中可以写*和列名
    	b、max()     表示求此列的最大值
   	c、min()     表示求此列的最小值
    	d、sum()     表示求此列的和
    	e、avg()     表示求此列的平均值
示例: #查询学生总数
	select count(*) from student;
	#查询女生的编号最大值
	select max(id) from student where gender=0;
	#查询女生的编号最小值
	select min(id) from student where gender=0;
	#查询所有学生的年龄和
	select sum(age) from student;
	#查询所有学生的年龄平均值
	select avg(age) from student;

3、分页

	语法:select * from 表名 limit start,count;
示例:	select * from student limit 0,3;
 	select * from student limit 3,3;
 	select * from student where gender=1 limit 0,3;

4、关联
分类:
1、表A inner join 表B(自关联):
表A与表B匹配的行会出现在结果集中
2、表A left join 表B(左关联):
表A与表B匹配的行会出现在结果集中,外加表A中独有的数据,未对应的数据使用null填充
3、表A right join 表B(右关联):
表A与表B匹配的行会出现在结果集中,外加表B中独有的数据,未对应的数据使用null填充

示例:
	关联查询:
>select students.name,class.name from class inner join students on class.id=students.classid;
>select students.name,class.name from class left join students on class.id=students.classid;
>select students.name,class.name from students right join class on class.id=students.classid;

5.分组
按照字段分组,表示此字段相同的数据会被放到一个集合中.分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中,可以对分组后的数据进行统计,做聚合运算.
语法: select 列1,列2,聚合…… from 表名 group by 列1,列2,列3,……;

示例:	#查询男女生总数
	select gender,count(*) from student group by gender;
	select name,gender,count(*) from student group by gender,age;
	select max(age),sex from stu group by sex;

分组后的数据筛选:
where与having的区别:
1、where是对from后面指定的表进行筛选,属于对原始数据的筛选
2、having是对group by的结果进行筛选

语法:
select 列1,2,聚合…… from 表名 group by 列1,2,3,…… having 列1,……聚合……;
示例:select max(age),sex from stu group by sex having max(age)>26;

6.排序
语法:select * from 表名 order by 列1 asc|desc,列2 asc|desc , ……;
说明:
a、将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序
b、默认按照从小到大的顺序排序
c、asc升序
d、desc降序

示例:#将没有被删除的数据按年龄排序
	select * from student where isDelete=0 order by age desc;
	select * from student where isDelete=0 order by age desc, id desc;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值