您的位置:首页 > 数据库 > MySQL

MySQL笔记1 - 终端与服务器的链接建立,服务器的开启与关闭,基本数句操作(增删改查)

2017-10-30 19:24 627 查看
2017/10/30 - 数据库编程 - day1

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: