MySQL(一)

一、数据库简介

1、数据库

数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。

2、数据库管理系统软件

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。

常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,Mysql(开源,免费,跨平台).

    文件        数据库

第一行内容        字段
其它内容      记录

一行内容      一条记录
一个文件      一张表
一个文件夹     一个库

#数据库管理系统:mysql,orcale,db2,mariadb,sql server(关系型数据库)
打开连接
切到一个文件下/找到一个文件/打开文件/读写记录/关闭文件(优化,加锁处理,权限认证)
关闭连接


#ps:
安装数据库指的是:数据库管理系统
创建数据库指的是:创建一个“文件夹”


非关系型数据库:数据都是以key=value的形式存放的


#数据库服务器:安装有数据库管理系统软件的一台机器

3、mysql基本使用

#1 登录
mysql -uroot -p123

#2 查看用户
select user();

#3 退出
quit
exit
q

#4 查看帮助信息
help create user;

#4 创建帐号
create user 'egon'@'192.168.32.*' identified by '123';
create user 'egon'@'192.168.32.3' identified by '123';
create user 'egon'@'%' identified by '123';

#6 授权
grant all privileges
grant all on db1.t1 to 'egon'@'%';
grant all on *.* to 'egon'@'%';

flush privileges;

#7 创建帐号同时授权
grant all on *.* to 'alex'@'%' identified by '123';
flush privileges;

#8 远程连接mysql
mysql -u wang -p123 -h 192.168.11.110

#9 查看所有的数据库
show databases;

#10 修改密码
命令行>mysqladmin -uroot -p'123' password 123
命令行>mysql -uroot -p123


#11 破解密码
#杀死mysqld服务
tasklist |findstr mysqld       # Liunx:ps aux | grep mysqld      查找mysql启动的进程端口
mysqld.exe 4980 Console  456,832 K
tskill mysqld            #Liunx:pkill mysqld       直接杀死进程
taskkill -f /PID 4980         #Liunx:kill -9 4980        杀死进程为4980的进程

mysqld --skip-grant-tables #跳过授权表启动
mysql> update mysql.user set password=password('') where user='root' and host='localhost';   修改密码

mysql> flush privileges;   刷新的意思
C:UsersAdministrator>tskill mysqld
C:UsersAdministrator>tasklist |findstr mysql
C:UsersAdministrator>mysqld
#重新以新密码登录

二、MySQL数据库(文件夹)的操作 

1、sql语句

  sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

  在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sql。

2、sql规范

<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;

<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。

<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

<4> 注释:单行注释:--

  多行注释:/*......*/

<5>sql语句可以折行操作

<6> DDL,DML和DCL

-- --SQL中 DML、DDL、DCL区别 .

-- -- DML(data manipulation language):
--    它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的
--    数据进行操作的语言
-- 
-- -- DDL(data definition language):
--    DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)
--    的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
-- 
-- -- DCL(Data Control Language):
--    是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)
--    语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权
--    力执行DCL

注意:

(1)在同一张表中,字段名是不能相同

(2)宽度和约束条件可选

(3)字段名和类型名是必须要有的

3、关于数据库(文件夹)操作的sql语句

- 增加(创建数据库)
  create database db1 charset utf8; 创建名为db1字符编码为utf8
  create database if not exists db1 charset utf8; 没有我就创建,有了就不创建了
  如果不加if not exists的话,创建重名的数据库就会报错,反之不会
- 查看数据库
  show databases; 查看所有数据库
  show create database db1; 查看数据库名为db1的数据库
- 修改数据库
  alter database db1 charset gbk; 修改数据库名为db1的字符编码为gbk
- 删出数据库
  drop database db1;

4、数据表(文件)的增删改查

切换到某一个库(文件夹
  use db1;  --注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
  select database();  #查看当前所在的库
- 增加(添加)表
create table t1(id int,name char(10),age int(4))engine=innodb default charset utf8;  #最后一个字段一定不要加逗号
  int(整数)不指定默认11位,char(字符串)不指定默认1个字符,最大255
- 查看表信息
  show tables; 查看所有的表
  show create table t1; 查看表t1的信息
  desc t1;#查看表结构
- 修改表结构

  alter table t1 charset gbk;  修改该表的字符编码为gbk
  alter table t1 add sex char; 添加一个字段
  alter table t1 drop sex; 删除一个字段
  alter table t1 modify sex char(6); 只可以改类型和类型的长度
  alter table t1 change sex Sex char(6); 连字段名都可以改

  rename table t1 to t2;   修改表名t1为t2

- 删除表
  drop table table66;

5、表记录的操作
- 增(添)加记录
  insert into db1.t1(id,name,age,Sex) values
    --(1,'egon1',18,'male'),
    --(2,'egon2',28,'male'),
    --(3,'egon3',38,'male'),
    --(4,'egon4',48,'male');
  写了是一一对应,不写(id,name,age,Sex)默认是表字段顺序

  insert into db1.t1(id,name) values(5,'egon5'); 添加啊一条记录,后面字段可为空


- 查询表记录
  select name,id from db1.t1; 查看name和id的字段
  select * from db1.t1; 查看所有字段的值
- 修改表记录
  update db1.t1 set name='EGON4'; 修改字段,所有的都改了
  update db1.t1 set name='alexsb' where id=5; 修改id为5的name
  update db1.t1 set name='aaaa' where Sex='male'; 修改Sex='male'的name
- 删除表记录
  delete from db1.t1; #仅仅只有删除记录的效果,没有把表重置到初始状态的功能,主键还在(会累加)
  truncate db1.t1; #清空+重置

- 删除某一条记录

  delete from db1.t1 where id=3;   删除id为3的这条记录
  delete from db1.t1 where name='dddd';


#自增id
create table t1(id int not null unique auto_increment,name char(4)); #自增的字段必须是非空且唯一
create table t1(id int primary key,name char(4));

效果如下:

insert into db1.t1(name) values
('egon1'),
('egon2'),
('egon3'),
('egon4');

 

练习:

一、老师表:teacher

 修改字段id为tid

 

二、班级表:class

 三、课程表:course

四、学生表:student

五、成绩表:score

原文地址:https://www.cnblogs.com/sunxiansheng/p/7694897.html