MYSQL数据库(一)

一、 数据库

概念: 数据存储的仓库,用于存储和管理数据。

数据库产品

Oracle:oracle公司             大型的关系型数据库 收费的
DB2:IBM公司                     大型的关系型数据库 收费的
Mysql:mysql公司             中小型关系型数据库 免费的
Sql Server:微软公司     中小型关系型数据库 收费的
Sqllite:安卓系统内置数据库 微型关系型数据库 免费的

NoSql系列数据库:not only sql    非关系型数据库   了解

关系型数据库:字段和值构成的二维列表

         数据库服务器:安装了数据库软件的计算机,类似于web服务器(安装了web服务软件的高性能计算机)

二、Mysql(数据库软件)

(1)安装:附图(引入其他链接)

(2)卸载:(计算机中未清理完毕,影响MYSQL的安装或更新)

    1.关闭mysql服务

1.手动关闭:我的电脑-->右键-->管理-->服务-->找对应的mysql的名称
2.cmd-->services.msc,打开服务面板
3.cmd-->net stop mysql(注意获取cmd管理员权限)

    2.控制面板--卸载(软件)

    3.卸载残留(临时存储文件)

    说明: 5.5版本--找到mysql的安装目录中my.ini文件,datadir目录(查询此关键字),删找到此路径的Mysql文件,然后删除。

(3)登陆数据库

            (1)启动MYSQL的后台服务(默认是启动的)

启动服务: net start mysql(根据你起的名称)

停止服务: net stop mysql(了解一下)

    (2)登陆数据库(黑窗口)

cmd-->mysql -uroot -p你自己的密码(5.6和5.7版本如果以明文的形式显示密码会给予警告)

        (4)配置密码

                问题:如果忘记密码怎么登陆呢?修改mysql的密码

1) 停止mysql服务----->运行输入services.msc,停止mysql服务或者 cmd --  net stop mysql
2) 在cmd下输入 mysqld --skip-grant-tables 启动服务器 光标不动(不要关闭该窗口)
3) 新打开cmd 输入mysql -u root -p 不需要密码---如果弹出需要密码,直接Enter即可 
use mysql;
update user set password=password('abc') WHERE User='root';
4) 关闭两个cmd窗口 在任务管理器结束mysqld 进程 

5) 在服务管理页面 重启mysql 服务

原理:MYSQL数据库已经内置了mysql的数据库,通过修改了此数据库终态的user表中的password字段,来达到修改密码目的

三、进入正题

     3.1  SQL概念

        概念:数据库操作语句,是用来操作所有的关系型数据库,理解为规范的语法(所有数据库厂商都要遵循),但是允许每种数

据库之间会存在差异,称为 "方言"

     3.2  SQL分类

DDL(Data Definition Language)      :数据定义语言,用来定义数据库对象(库、表、字段(列)等)(理解概念);
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改);
DCL(Data Control Language)           :数据控制语言,用来定义访问权限和安全级别(了解);

DQL(Data Query Language)             :数据查询语言,用来查询记录(数据)(重点掌握);

    3.3  DDL的操作语句(没有触及数据---数据是灵魂)

        (1)关于数据库(database)的DDL语句(查询和修改以及删除)

                        *  查看(show)所有(s)库: show databases;
* 使用( use)库: use 库名  
* 创建数据库(总得起名吧):create database 数据库名称;
* 删除数据库(删除哪一个):drop database 数据库名称;
* 设置( set)数据库(必须 指定)的字符集: alter database mydb1 character set 要修改的字符集名称;(gbk,utf8)

* 查询创建的数据库(前提是必须有该数据库):show create database 数据库名称;显示的是名字和编码信息等   

        注意:好好体会drop和alter的含义(应用场景)

        (2)关于查询表(table)的DDL语句(必须先进入某个数据库中,表是依赖于数据库存在的)

                        *显示某个库下(先进入--use)的所有表(s)     :show tables;

*显示某个的详细字段信息(表结构)           :desc 表名;(无show table的详情)

             表结构:Field | Type | Null | Key | Default | Extra等构成

     字段(列)的数据类型(常见的)

* int:整型(11位);id编号

* double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,最大值为999.99工资

* char:固定长度字符串类型;例如:name char(10);性别

        * varchar:可变长度字符串类型(会扩容不会);例如:name varchar(10);

        注意1:char和varchar的区别?(前者字段的长度是固定,后者根据实际长度存储的)

* text:字符串类型;存大格式的文本,如存个小说一般不用(存的是链接)
* blob:字节类型;存字节类型的数据,如电影图片的字节但是一般不会把字节数据存到数据库当中(链接)
* date:日期类型,格式为:yyyy-MM-dd;
* time:时间类型,格式为:hh:mm:ss
* datetime:日期时间类型   yyyy-MM-dd hh:mm:ss

* datestamp:时间戳类型    yyyy-MM-dd hh:mm:ss

        注意2:datetime和datestamp的区别?后者如果该类型的字段不给赋值,则默认当前系统时间

                注意3:二者的格式必须是 yyyy-MM-dd hh:mm:ss的形式

                        * 创建一个表(至少要定义一个字段(包括类型))

create table 表名(
		列名1 类型1,
		列名2 类型2,
		...
		列名n 类型n	
		);

                说明:字段名必须在字段类型之(SQL的语法规定),表创建完了,总得看看创建的表结构吧(desc)

 (3)修改表的DDL语句(范围--从大大小)

                                1.     重命名表名称:修改stu表名称为student:

ALTER TABLE stu RENAME TO student;

                                2. 修改字段类型:修改stu表的gender字段(列)类型为CHAR(2):

ALTER TABLE stu MODIFY gender CHAR(2);

3. 修改 字段名:修改stu表的gender列名为sex:

ALTER TABLE stu change gender sex CHAR(2);

                                        注意:修改一个字段的名称,此时一定要重新指定该字段的类型

4      添加字段:给stu表添加classname列( 包含字段类型和字段名)

ALTER TABLE stu ADD (classname varchar(100));

                                        思考:批量为表添加多个字段

5. 删除字段:删除stu表的classname列( 无需再追加字段类型了)

ALTER TABLE stu DROP classname;

                                6.     删除表:drop table 表名;

补充:只要不操作数据(触及灵魂),同时对表的操作之后,表结构仍然存在,必须以alter开头,表明关于表的某些内容发生变

化,比如(表的编码、表的名字、表的结构)。

        3.4 DML的操作语句(触及灵魂,数据发生变化)

               1、(插入一条数据---insert into)

       语法:insert into 表名(列名1,列名2,...)values(值1,值2,....);

               insert into stu(sname,age) values("lisi",23);//(1)总共三个字段,数据添加不完整,会显示对应的默认值
	       insert into stu(sname,age,sex) values("zhangsan",23,'1');//(2)
	       insert into stu values("ww",23,'2');//(3)简写形式

       注意:如果表的所有字段都添加值,则字段名可以省略,同时添加的字段名称和值(字段类型)要顺序匹配

       补充:添加日期类型的时候,日期要用单引号引起来,对于时间戳的日期类型(即使添加的是null,也会显示当前时间)

       2、删(delete)

                删(删除表中的所有数据,还是条件删除,还是删除表结构)

语法:
* delete from 表名 [where 条件];
* truncate table 表名;-- 删除所有记录
* 先删除表,再创建表。

 delete from stu where sname = 'lisi'

                        理解:在什么的条件下(where),从该表中删除对应的一行数据(数据条)

                        注意:delete、drop、trancate的区别?

                        主要区别:TRUNCATE 和DELETE只删除数据, DROP则删除整个表(结构和数据)

详见:点击打开链接点击打开链接

3、改(更新--update):

语法:

* update 表名 set 列名1 = 值1 , 列名2 = 值2... [where 条件]

                       理解:既然是更新(update),那必须知道是如何更新的,通过set来设置更新的数据。

3.5 DML的操作语句(操作数据,只是不改变数据)

* 语法:
SELECT 
selection_list /*要查询的列名称*/
FROM 
table_list /*要查询的表名称*/
WHERE 
condition /*行条件*/
GROUP BY 
grouping_columns /*对结果分组*/
HAVING 
condition /*分组后的行条件*/
ORDER BY 
sorting_columns /*对结果分组*/
LIMIT 
offset_start, row_count /*结果限定*/



猜你喜欢

转载自blog.csdn.net/wzj_110/article/details/80380876