欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库终端与服务器的链接建立、服务器的开启与关闭、基本增删改查数据操作

程序员文章站 2022-06-24 20:26:42
sql(structured query language 结构化的查询语言); 数据库中的语句和表属性不区分大小写,只有表的名字区分大小写; 数据库的执行语句以分号'...

sql(structured query language 结构化的查询语言);

数据库中的语句和表属性不区分大小写,只有表的名字区分大小写;

数据库的执行语句以分号','为结尾表示语句的结束;

注:sql中表示字符串的时候,既可以使用单引号也可以双引号;

数据库的分类:

数据库的分类分为关系型数据库和给关系型数据库;

命令集合:

$ whereis mysql #查找数据库的路径

sudo /etc/init.d/mysql stop #关闭mysql服务器 (计算机默认开启)

sudo /etc/init.d/mysql start #启动mysql服务器

mysql -u root -p #打开终端客户端,建立终端与mysql的链接

password:123456

\c #清空写下的语句

\q #退出终端客户端

CREATE DATABASE testDB; #建立数据库

SHOW DATABASES; #显示数据库

use testDB; #使用数据库

select * from customers;

show tables;

show create table customers;

1.关系型数据库建模(构件块):

数据以行和列的形式存储数据;

这一系列的行和列成为表(关系);

表中每一行表示一条记录(元组),即行-元组;

表中每一列表示记录的一个属性,即-列-属性;

一组表组成了数据库;

表与表之间的逻辑关联叫关系。

2.关系型数据库的核心内容是关系,即二维表:

常用的关系操作:查询;插入、删除、修改操作;

关系操作的对象是关系,操作结果也是关系;

关系操作的特点是集合操作方式,即操作的对象和结果都是集合。

3.集合操作:

选择:

从表中抽取出满足给定限制条件的行

选择的结果是行;

投影的结果是列;

并:

属于表1或者属于表2的元组构成的集合,前提是表的属性的顺序和个数都相同

差:

两个表中不一样的部分,前提是两个表中具有相同字段(属性名可以不同)

笛卡尔积:

将两个表中的元组以所有可能的方式组合起来;

元组数量是各个表的元组数(行数据)的乘积

4.mysql服务器和客户端

在Ubuntu安装MySQL,要安装

服务器 - 管理数据库(相当于QQ后台);

客户端 - 一系列访问数据和创建应用的工具(相当于QQ软件)。

实例:

终端打开数据库:

mysql -u root -p123456 #ser为root,password为123456,-p后面没有空格

mysql> show databases; #后面有分好表示结束

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

+--------------------+

4 rows in set (0.01 sec)

图形界面数据库:MySQL Workbench #点击闪电开始运行程序

5.启动MySQL服务器(默认是开启的,创建客户端与服务器的链接,所有都是先开启服务器后开启客户端):

终端建立与服务器的链接:

mysql -u 用户名 -p密码 -h 服务器名称 -P 端口

例:mysql -u root -p123456

或者

mysql -u root -p

password:123456

6.退出sql客户端程序(断开与mysql服务器的链接,退出客户端即断开):

quit;

\q

exit

7.清楚之前输入的sql语句,重新开始输入

\c

8.关闭MySQL服务器:

sudo /etc/init.d/mysql stop #关闭mysql服务器 (需要键入超级用户的密码)

sudo /etc/init.d/mysql start #启动mysql服务器

mysql -u root -p #打开客户端,建立终端与mysql的链接

password:123456

实例:

yiquanchaoren@qiyu:~$ sudo /etc/init.d/mysql stop

[sudo] tarena 的密码:

[ ok ] Stopping mysql (via systemctl): mysql.service.

yiquanchaoren@qiyu:~$ sudo /etc/init.d/mysql start

[ ok ] Starting mysql (via systemctl): mysql.service.

yiquanchaoren@qiyu:~$ mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.19-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

9.查找mysql服务器的位置

yiquanchaoren@qiyu:~$ whereis mysql

实例:

mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

10.sql(structured query language 结构化的查询语言)写作规范

不区分字母的大小写(注:MySQL对表的名字区分大小写);

以关键字开头:SELECT,INSERT,UPDATE,DELETE,ALTER,DROP,CREATE,USE,SHOW;

以分号;结尾

11.创建数据库

CREATE DATABASE 数据库名;

CREATE DATABASE testDB;

12.查询已有的数据库:

SHOW DATABASES;

实例:

mysql> CREATE DATABASE testDB;

Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

| testDB |

+--------------------+

5 rows in set (0.03 sec)

bug:没有加分号,

13.选择数据库:

use 数据库名

use testDB;

实例:

mysql> use testDB

Database changed

14.创建表格

create table 表名(column1 datatype,...,columnN datatype);

15.数据类型:

字符串:

定长 char

不定长 varchar

数值型:

整型 int

定长小数 decimal 例:decimal(5,2) 123.45

浮点型float

日期和时间

实例:

create table customers(ID INT,NAME VARCHAR(20),AGE INT,ADDRESS CHAR(25),SALARY DECIMAL(18,2));

实例:

mysql> use testDB

Database changed

mysql> create table customers(ID INT,NAME VARCHAR(20),AGE INT,ADDRESS CHAR(25),SALARY DECIMAL(18,2));

Query OK, 0 rows affected (0.04 sec)

16.查询已有的表:

show tables

实例:

mysql> show tables;

+------------------+

| Tables_in_testDB |

+------------------+

| customers |

+------------------+

1 row in set (0.00 sec)

17.选择数据库:

mysql> select * from customers;

Empty set (0.00 sec)

18.查询已有的表

show tables;

19.查询已有的表的各个字段(查询使用表的所有属性名称和数据类型吗)

show create table customers;

实例:

mysql> show create table customers;

+-----------+

| Table | Create Table

+-----------+

| customers | CREATE TABLE `customers` (

`ID` int(11) DEFAULT NULL,

`NAME` varchar(20) DEFAULT NULL,

`AGE` int(11) DEFAULT NULL,

`ADDRESS` char(25) DEFAULT NULL,

`SALARY` decimal(18,2) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

练习:

创建数据库:schools

使用该数据库;

创建表students,其中字段包括:

id int,name varchar(20),gender char(20),age int

查询当前数据库中的所有的表格

查询表studets中的所有属性名称和数据类型

sudo mysql -u root -p123456

create database schools;

use schools;

create table student(id int,name varchar(20),gender char(20),age int)

show tables;

show create table student;

20.删除表格

drop table 表名;

21.删除数据库:

drop database 数据库名;

实例:

create database yangDB;

show databases;

use yangDB;

create table python(id int);

show tables;

drop table python;

show tables;

drop database yangDB;

show databases;

22.往表中插入数据

两种语法:

(1)insert into 表名 (column1,column2,...,columnN) values (value1,value2,...,valueN);

(2)insert into 表名 values (value1,value2,value3,...,valueN);

实例:

insert into customers(id,name,age,address,salary) values (1,'Ann',30,'beijing',2000);

insert into customers(id,name,age,salary,address) values (2,'li',30,2000,'beijing'); #更换了属性顺序

insert into customers values (3,'jeremy',20,'shanghai',2000)

23.一次性插入N条数据:

insert into customers(ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Bob',25,'beijing',6500),(5,'aaa',25,'beijing',6500),

(6,'bbb',25,'beijing',6500),(7,'ccc',27,'beijing',6500);

24.select查询语句:

select column1,column2,...,columnN from 表名;

(1)查询表中所有的记录(包含所有列);

select * from 表名;

(2)自定义查找表中的记录信息(非所有列):

select column1,column2 from 表名;

实例:

select * from customers;

select name,age from 表名;

25.用一个表去填充另一个表:

insert into 第二个表名

(column1,column2,...,columnN) select column1,column2,...,columnN from 第一个表

实例:

create table customers_2(ID INT,NAME VARCHAR(20),AGE INT,ADDRESS CHAR(25),SALARY DECIMAL(18,2));

insert into customers_2

(ID,NAME,AGE,ADDRESS,SALARY) select ID,NAME,AGE,ADDRESS,SALARY from customers;

26.指明操作符

代数:+-*/%

比较:=,!=,<>(不等于),>,<,>=,<=,!<,!>

逻辑:ALL , AND , ANY , BETWEEN , EXISTS ,

IN , LIKE , NOT , OR , IS NULL , UNIQUE

AND & OR:

select column1,column2,...columnN from 表名 where 条件1 and 条件2...and 条件N;

select column1,column2,...columnN from 表名 where 条件1 or 条件2...or 条件N;

27.where 条件语句(查询,修改,删除使用)

select column1,column2,...,columuN from 表名 where 条件;

实例:

select * from customers where name = 'Ann';

实例:

选择customers表中,工资大于等于4000的顾客的姓名,地址,工资信息

select name,address,salary from customers where salary >= 4000;

实例:

select name,salary from customers where salary > 2000 and age <35;

练习:

查询年龄大于24,工资大于5000或者小于3000的人的姓名,年龄,工资

select name,age,salary from customers where age > 24 and salary >5000 or salary < 3000;

select name,age,salary from customers where not(age > 24 and salary >5000 or salary < 3000);

注意:切记写

select name,age,salary from customers where not(age > 24) and salary >5000 or salary < 3000;

结果中往往没有实现not(age > 24) #@@@@@@@@@@@@@@@@@@@@@@@@@@@

28.查看当前库

select database();

实例:

mysql> select database();

+------------+

| database() |

+------------+

| schools |

+------------+

1 row in set (0.00 sec)

==========================================================================

练习:

创建数据库:schools

使用该数据库;

创建表students,其中字段包括:

id int,name varchar(20),gender char(20),age int

往表中插入几条学生信息,要求用不同的方法进行插入:

首先插入一条数据,后同时插入多条数据,

创建一个新表叫做students_copy,

再复制students表到新表students_copy,选择性别为女,并且年龄大于20岁的学生,将这些学生的插入到新生成的表students_copy

提示:

insert into

select ...from

where ...and

解:

create table students(id int,name varchar(20),gender char(20),age int

);

insert into students (id,name,gender,age) values (1,'yuxiu','F',24);

insert into students values (2,'yuanchenzhi','M',22);

insert into students (age,gender,name,id) values (19,'M','zhangyu',3);

insert into students (id,name,gender,age) values (4,'limingxia','F',19),(5,'zuoting','F',21),(6,'cuillixia','F',23);

create table students_copy(id int,name varchar(20),gender char(20),age int

);

insert into students_copy (id,name,gender,age) select id,name,gender,age from students where gender ='F' and age > 20;

执行结果:

mysql> select * from students_copy;

+------+-----------+--------+------+

| id | name | gender | age |

+------+-----------+--------+------+

| 1 | yuxiu | F | 24 |

| 5 | zuoting | F | 21 |

| 6 | cuillixia | F | 23 |

+------+-----------+--------+------+

3 rows in set (0.00 sec)

mysql> select * from students;

+------+-------------+--------+------+

| id | name | gender | age |

+------+-------------+--------+------+

| 1 | yuxiu | F | 24 |

| 2 | yuanchenzhi | M | 22 |

| 3 | zhangyu | M | 19 |

| 4 | limingxia | F | 19 |

| 5 | zuoting | F | 21 |

| 6 | cuillixia | F | 23 |

| 3 | zhangyu | M | 19 |

+------+-------------+--------+------+

7 rows in set (0.00 sec)