MySql的学习之旅

初始化数据库

1.安装数据库,然后进到命令行初始化数据库

1.1 安装数据库服务

		mysqld --install //安装mysql服务

1.2 初始化数据库

		mysqld --initialize --console //初始化mysql服务

1.3链接数据库

初始化后的账号密码默认均为root

用户: root
密码: root

主机 -h host
端口 -P port
用户 -u user
密码 -p password

mysql -h127.0.0.1 -P33.6 -uroot -proot//链接数据库

如果是链接本地数据库 -h可以省略  如果端口是3306也可以省略
mysql -uroot -proot
	

1.4退出登录数据库

	方法一    exit  
	方法二    quit
	方法三    \q

1.5 创建一个数据库

	show databases //显示所有数据库
	CREATE DATABASE stu  //stu是数据库名

	//如果创建已经有的数据库就会报错
	CREATE DATABASE 数据库名;
	ERROR 2013 (HY000): Lost connection to MySQL server during query

	--在数据库创建的时候判断是否已经创建,如果不存在就创建
	create database if not exists 数据库名;

1.6 删除一个数据库

	drop database stu;

	--在数据库创建的时候判断是否已经存在,如果存在就删除

	drop database if xists 数据库名

1.6.1 显示创建数据库语句

	show create database 数据库名; 

1.6.2 修改数据库字符编码
数据库只能修改字符编码
在mysql中uft字符编码直接没有横杠 utf8

	alter database 数据库名 charset=字符编码;

创建表

	模板
		create table `表名`(
			`字段名`  数据类型  ,
			`字段名`  数据类型  ,
		);

		//数据类型
			1.null  |  not null			是否为空
			2.default 					默认值
			3.auto_increment 			自动增长
			4.primary key 				主键、每个表必须要有一个主键
			5.comment 					备注
			6.engline					引擎
	实例
	use stu//更改到当前数据库
	set names gbk;//设置客户端与服务端通讯的字符编码

	create table stu1(
   		id int auto_increment primary key ,
	    name varchar(20) not null
     );

1.6.3 显示创建表数据

		show create table;

1.6.4 查看表结构

		desc stu ;

1.6.5 删除表

		drop table stu;

		删除多个表
		drop table stu1,stu2,stu3

1.6.6 复制表

	语法1
		\\从stu1里面选择所有的数据放到stu2里面,但是不能复制键
		create table 新表 select * from 旧表
	语法2
		只能复制表结构,不能复制表的数据 
		create table 新表 like 旧表 
			

1.6.7 修改表

1.添加字段
	alter table stu add `add` varchar(20);
2.删除字段
	 alter table stu1 drop 字段;
3.修改字段
 alter table stu1 change 旧字段名称 新字段名称 varchar(10);
4.更改表名称
 alter table 旧表名 rename to 新表名称

插入时无法插入中文字符:

原因:服务端返回的字符与客户端接收不一致

set names utf8
  1. 枚举(enum)
	create table stu2(
    -> name varchar(20),
    -> sex enum('男','女','保密')
    -> );

	desc stu2
    -> ;
+-------+----------------------------+------+-----+---------+-------+
| Field | Type                       | Null | Key | Default | Extra |
+-------+----------------------------+------+-----+---------+-------+
| name  | varchar(20)                | YES  |     | NULL    |       |
| sex   | enum('男','女','保密')     | YES  |     | NULL    |       |
+-------+----------------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

集成环境的mysql服务冲突解决

	sc delete mysql

外键


	create table stuinfo(
		id tinyint primary key, 
		name varchar(10)
	)engline=innodb;
	
	create table stuscore(
		sid tinyint primary key,
		score tinyint unsigend,
		foregin key(sid) references stuinfo(id)   //创建外键:将本表的sid键作为stuinfo下的id的外键
	)engline=innodb;

查询语句

1.7.0 条件查询 where

大于
< 小于
= 大于等于
<= 小于等于
= 等于
!= 不等于
– 逻辑运算符
and 与
or 或
not 非
– 其他
in | not in 字段的值在枚举范围内
between…and|not between…and 字段的值在数字范围内
is null | is not null 字段的值不为空

1.7.2 分组查询 group by
sum()  	   求和
avg()  		平均分
count() 	记录条数
max()		求最大数
min()		求最小数
	查询男生和女生各自多少人
	select stusex,count(*) 人数 from stu group by stusex;

	每个地区的数学平均分
	select stuaddress,avg(math) from stu group by stuaddress;

	多列分组
	select stuaddress,stusex,avg(math) from stu group by stuaddress,stusex;

	通过group_concat()函数将同一组的值连接起来显示.
	select group_concat(stuname),stusex,avg(math) from stu group by stusex;

注意:
		1、如果是分组查询,查询字段是分组字段和聚合函数。
		2、查询字段是普通字段,只取第一个值
		3、group_concat()将同一组的数据连接起来
1.7.3 排序查询 order by
关键字
		asc:升序【默认】
		desc:降序	
	按年龄的升序排列
		select * from stu order by stuage asc;
		select * from stu order by stuage;       -- 默认是升序
	
	多列排序
		年龄升序,如果年龄一样,按ch降序排列
		select * from stu order by stuage asc,ch desc;
1.7.4 limit

语法:limit [起始位置],显示长度

	从第0个位置开始取,取3条记录
	select * from stu limit 0,3;

	从第2个位置开始取,取3条记录
	select * from stu limit 2,3;
	
	起始位置可以省略,默认是从0开始

	找出班级总分前三名
	select *,ch+math total from stu order by (ch+math) desc limit 0,3;
1.7.5 查询语句中的选项
  1. all 显示所有的选项(默认)
  2. distinct 去除重复的选项
	select all stuaddress from stu;

	-- 去除重复的项
	select distinct stuaddress from stu;
1.7.6 通配符
  1. _ [下划线] 表示任意一个字符
  2. % 表示任意字符

模糊查询的条件不能用’=’,要使用like。

		select * from stu where stuname like 'T_m';

		-- 查询姓张的学生
		mysql> select * from stu where stuname like '张%';

1.8 union(联合)

作用:将多个select语句结果集纵向联合起来

union的选项有两个

1、 all:显示所有数据

2、 distinct:去除重复的数据【默认】

mysql> select * from stu where stuaddress='上海' and stusex='男' union select * from stu where stuaddress='北京' and stusex='女';

多表查询

数据库备份与还原

数据库备份

	将emoticon数据库中所有的表导出到emoticon。sql中
	mysqldump -uroot -proot emoticon>c:\emoticon.sql
	
	单独导出数据库中的某张表
	mysqldump -uroot -proot emoticon stu stuname>c:\emoticon.sql
	
	导出数据库,带有创建数据库的语法
		mysqldump -uroot -proot -B emoticon>c:\emoticon.sql

数据库还原

	需要登录
	source c:/emoticon.sql;
	
	不需要登录
	mysql -uroot -proot emoticon < c:\emoticon.sql;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值