笔记1-1:css-js-javaio-数据库-jsp-mysql
css
属性选择器:选择有某属性的标签
用法:标签名[attr]{}
= 完全匹配 div[class="search"]{background: red;} /* 只对search设置 */
*= 部分匹配 div[name*="search"]{background: red;} /* 只要name属性值出现过search的都匹配 */
^= 起始匹配 div[name^="search"]{background: green;} /* name属性以search开头的都匹配 */
$= 结束匹配 div[name$="search"]{background: blue;} /* name属性以search结尾的都匹配 */
[][][] 组合匹配 div[class][id]{background: pink;} /* 既有class也有id才会匹配 */
层次选择器
1-后代 M N{} 在指定的M找指定的N 孩子的孩子也选择 例子:div p{color:red;}
2-父子 M>N{} 孩子的孩子不选择
3-兄弟 M~N{} 找到M下面的所有N设置
4-相邻 M+N{} 只找向下相邻的一个*/
伪类选择器:
:link{} 初始化的状态
:visited{} 被访问过的状态
:active{} 正在访问状态
:hover{} 鼠标悬浮状态
js
js基本数据类型
1. number 数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)
2. string 字符串。 字符串 "abc" "a" 'abc'
3. boolean true和false
4. null 一个对象为空的占位符
5. undefined 未定义
某些方法
random() 返回 0 ~ 1 之间的随机数。 含0不含1
ceil(x) 对数进行上舍入。
floor(x) 对数进行下舍入。
round(x) 把数四舍五入为最接近的整数。
事件
onload 一张页面或一幅图像完成加载。
onclick 单击事件
ondblclick 双击事件
onfocus 元素获得焦点
onblur 失去焦点
---鼠标事件
onmousedown 鼠标按钮被按下。
onmouseup 鼠标按键被松开。
onmousemove 鼠标被移动。
onmouseover 鼠标移到某元素之上。
onmouseout 鼠标从某元素移开。
---键盘事件
onkeydown 某个键盘按键被按下。
onkeyup 某个键盘按键被松开。
onkeypress 某个键盘按键被按下并松开。
onchange 域的内容被改变。
onselect 文本被选中。
onsubmit 确认按钮被点击。
onreset 重置按钮被点击。
BOM==Browser Object Model 浏览器对象模型
1. 组成
Window 窗口对象
Navigator 浏览器对象
Screen 显示器屏幕对象
History 历史记录对象
Location 地址栏对象
2.Window:窗口对象
----说明:
window对象不需要创建可以直接使用 window使用。 window.方法名();
window引用可以省略。 方法名();
----提示框
alert() 显示带有一段消息和一个确认按钮的警告框。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
prompt() 显示可提示用户输入的对话框。
----窗口
window.close(关闭对象) 关闭浏览器窗口。
window.open("地址") 打开一个新的浏览器窗口,返回新的Window对象
----定时器
返回值:唯一标识,用于取消定时器
setTimeout(方法或计算表达式,毫秒) 在指定的毫秒数后调用函数或计算表达式(执行一次)
clearTimeout() 取消由 setTimeout()方法设置的 timeout。
setInterval(方法或计算表达式,毫秒) 按照指定的周期来调用函数(循环执行)
clearInterval() 取消由 setInterval()设置的 timeout。
---获取其他对象
window.history 或 直接使用
location
Navigator
Screen:
document:获取DOM对象
3. Location:地址栏对象
----location.reload() 重新加载当前文档。刷新
----location.href 设置或返回完整的 URL。
4. History:历史记录对象
back() 加载 history 列表中的前一个 URL。
forward() 加载 history 列表中的下一个 URL。
go(参数) 加载 history 列表中的某个具体页面。
history.length 返回当前窗口历史列表中的 URL 数量。
DOM==Document Object Model 文档对象模型
1. 核心dom
Document 文档对象
Element 元素对象
Attribute 属性对象
Text 文本对象
Comment 注释对象
2. 方法
----获取元素
getElementById() 根据id属性值获取元素对象。id属性值一般唯一
getElementsByName() 根据name属性值获取元素对象们。返回值是一个数组
getElementsByTagName() 根据元素名称获取元素对象们。返回值是一个数组
getElementsByClassName() 根据Class属性值获取元素对象们。返回值是一个数组
----增删属性
createAttribute(name)
removeAttribute("属性名") 删除属性
setAttribute("属性名","值") 设置属性
----node节点
节点1.appendChild(节点2) 向节点的子节点列表的结尾添加新的子节点。
removeChild() 删除(并返回)当前节点的指定子节点。
replaceChild() 用新节点替换一个子节点。
---元素属性
innerHTML 标签体里的内容
style 元素样式 用法:标签元素.style.属性名 = 值;
javaIO流
流的关闭原则:先开后关,后开先关。
一、字节流 一切皆为字节
【字节输出流OutputStream】字节输出流的所有类的超类,将指定的字节信息写出到目的地
public void close() 关闭此输出流并释放与此流相关联的任何系统资源。
public void flush() 刷新此输出流并强制任何缓冲的输出字节被写出。
public void write(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。
public void write(byte[] b, int off, int len) 从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
public abstract void write(int b) 将指定的字节输出流。
---FileOutputStream类
public FileOutputStream(File file) 创建文件输出流以写入由指定的 File对象表示的文件。
public FileOutputStream(String name) 创建文件输出流以指定的名称写入文件。
public FileOutputStream(File file, boolean append) 创建文件输出流以写入由指定的 File对象表示的文件。
public FileOutputStream(String name, boolean append) 创建文件输出流以指定的名称写入文件。
传入一个boolean类型的值,`true` 表示追加数据,`false` 表示清空原有数据。
【字节输入流InputStream】读取字符流的所有类的超类,读取字节信息到内存中。
public void close() 关闭此输入流并释放与此流相关联的任何系统资源。
public abstract int read() 从输入流读取数据的下一个字节。
public int read(byte[] b) 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。
---FileInputStream类
FileInputStream(File file) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
FileInputStream(String name) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
二、字符流
【字符输入流Reader】读取字符流的所有类的超类,可以读取字符信息到内存中
public void close() 关闭此流并释放与此流相关联的任何系统资源。
public int read() 从输入流读取一个字符。
public int read(char[] cbuf) 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。
---FileReader类
FileReader(File file) 创建一个新的 FileReader ,给定要读取的File对象。
FileReader(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称。
read() 方法,每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回`-1`,循环读取
read(char[] cbuf) 每次读取b的长度个字符到数组中,返回读取到的有效字符个数,读取到末尾时,返回`-1` ,代码使用演示:
【字符输出流Writer】写出字符流的所有类的超类,将指定的字符信息写出到目的地。
void write(int c) 写入单个字符。
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
void flush() 刷新该流的缓冲。
void close() 关闭此流,但要先刷新它。
---FileWriter类
FileWriter(File file) 创建一个新的 FileWriter,给定要读取的File对象。
FileWriter(String fileName) 创建一个新的 FileWriter,给定要读取的文件的名称。
write(int b) 每次可以写出一个字符数据,代码使用演示:
注意:关闭资源时,与FileOutputStream不同。 如果不关闭,数据只是保存到缓冲区,并未保存到文件。
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要`flush` 方法了。
flush 刷新缓冲区,流对象可以继续使用。
close 先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
还可以使用JDK7优化后的`try-with-resource` 语句,该语句确保了每个资源在语句结束时关闭。所谓的资源(resource)是指在程序完成后,必须关闭的对象。
try (创建流对象语句,如果多个,使用';'隔开) {
// 读写数据
} catch (IOException e) {
e.printStackTrace();
三、属性集
【Properties类】
public new Properties() 创建一个空的属性列表。
public Object setProperty(String key, String value)保存一对属性。
public String getProperty(String key) 使用此属性列表中指定的键搜索属性值。
public Set<String> stringPropertyNames() 所有键的名称的集合。
public void load(InputStream inStream) 从字节输入流中读取键值对。
public void store(字节/字符输入流, "注释说明") 把集合中的临时数据,持久化写入到硬盘中存储
四、 缓冲流
基本原理:在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
【字节缓冲流BufferedInputStream】
public BufferedInputStream(InputStream in) 创建一个新的缓冲输入流。
public BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流。
【字符缓冲流BufferedReader】
public BufferedReader(Reader in) 创建一个 新的缓冲输入流。
public BufferedWriter(Writer out) 创建一个新的缓冲输出流。
五、转换流
【InputStreamReader类】 Reader的子类,是从字节流到字符流的桥梁
InputStreamReader(InputStream in) 创建一个使用默认字符集的字符流。
InputStreamReader(InputStream in, String charsetName) 创建一个指定字符集的字符流。
【OutputStreamWriter类】 Writer的子类,是从字符流到字节流的桥梁
OutputStreamWriter(OutputStream in) 创建一个使用默认字符集的字符流。
OutputStreamWriter(OutputStream in, String charsetName) 创建一个指定字符集的字符流。
* **ASCII字符集** :
* ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,用于显示现代英语,
主要包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号)。
* 基本的ASCII字符集,使用7位(bits)表示一个字符,共128字符。ASCII的扩展字符集使用8位(bits)表示一个字符,共256字符,方便支持欧洲常用字符。
* **ISO-8859-1字符集**:
* 拉丁码表,别名Latin-1,用于显示欧洲使用的语言,包括荷兰、丹麦、德语、意大利语、西班牙语等。
* ISO-8859-1使用单字节编码,兼容ASCII编码。
* **GBxxx字符集**:
* GB就是国标的意思,是为了显示中文而设计的一套字符集。
* **GB2312**:简体中文码表。一个小于127的字符的意义与原来相同。但两个大于127的字符连在一起时,就表示一个汉字,这样大约可以组合了包含7000多个简体汉字,
此外数学符号、罗马希腊的字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,
这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。
* **GBK**:最常用的中文码表。是在GB2312标准基础上的扩展规范,使用了双字节编码方案,共收录了21003个汉字,完全兼容GB2312标准,同时支持繁体汉字以及日韩汉字等。
* **GB18030**:最新的中文码表。收录汉字70244个,采用多字节编码,每个字可以由1个、2个或4个字节组成。支持中国国内少数民族的文字,同时支持繁体汉字以及日韩汉字等。
* **Unicode字符集** :
* Unicode编码系统为表达任意语言的任意字符而设计,是业界的一种标准,也称为统一码、标准万国码。
* 它最多使用4个字节的数字来表达每个字母、符号,或者文字。有三种编码方案,UTF-8、UTF-16和UTF-32。最为常用的UTF-8编码。
* UTF-8编码,可以用来表示Unicode标准中任何字符,它是电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。
所以,我们开发Web应用,也要使用UTF-8编码。它使用一至四个字节为每个字符编码,编码规则:
1. 128个US-ASCII字符,只需一个字节编码。
2. 拉丁文等字符,需要二个字节编码。
3. 大部分常用字(含中文),使用三个字节编码。
4. 其他极少使用的Unicode辅助字符,使用四字节编码。
六、对象流(序列化)
---一个对象要想序列化,必须满足两个条件:
-该类必须实现`java.io.Serializable ` 接口,`Serializable` 是一个标记接口,不实现此接口的类将不会使任何状态序列化或反序列化,会抛出`NotSerializableException` 。
-该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用`transient` 关键字修饰。
---对于JVM可以反序列化对象,它必须是能够找到class文件的类。如果找不到该类的class文件,则抛出一个 `ClassNotFoundException` 异常
---当JVM反序列化对象时,能找到class文件,但是class文件在序列化对象之后发生了修改,那么反序列化操作也会失败,抛出一个`InvalidClassException`异常
该类的序列版本号与从流中读取的类描述符的版本号不匹配
该类包含未知数据类型
该类没有可访问的无参数构造方法
---Serializable接口给需要序列化的类,提供了一个序列版本号。
serialVersionUID` 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
private static final long serialVersionUID = 1L;
【ObjectOutputStream类】将Java对象的原始数据类型写出到文件,实现对象的持久存储。
public ObjectOutputStream(OutputStream out) 创建一个指定OutputStream的ObjectOutputStream。
public final void writeObject (Object obj) 将指定的对象写出。
【ObjectInputStream类】反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。
public ObjectInputStream(InputStream in) 创建一个指定InputStream的ObjectInputStream。
public final Object readObject () 读取一个对象。
七、打印流
【PrintStream类】
//创建打印流指定打印位置
public PrintStream(String fileName) 使用指定的文件名创建一个新的打印流。
PrintStream ps = new PrintStream("ps.txt");
//设置系统的打印流流向,输出到ps.txt
System.setOut(ps);
java数据库操作
一、JDBC控制事务:
----事务四大特征:
----原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
----持久性:当事务提交或回滚后,数据库会持久化的保存数据。
----隔离性:多个事务之间。相互独立。
----一致性:事务操作前后,数据总量不变
----事务隔离级别(了解)
概念:多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
存在问题:
----脏读:一个事务,读取到另一个事务中没有提交的数据
----不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。
----幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
隔离级别:
----【read uncommitted】 读未提交
产生的问题:脏读、不可重复读、幻读
----【read committed】 读已提交 (Oracle)
产生的问题:不可重复读、幻读
----【repeatable read】 可重复读 (MySQL默认)
产生的问题:幻读
----【serializable】 串行化
可以解决所有的问题
注意:隔离级别从小到大安全性越来越高,但是效率越来越低
数据库查询隔离级别:
----select @@tx_isolation;
数据库设置隔离级别:
----set global transaction isolation level 级别字符串;
---开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务 在执行sql之前开启事务
---提交事务:commit() 当所有sql都执行完提交事务
---回滚事务:rollback() 在catch中回滚事务
二、数据库连接池
---【C3P0】 数据库连接池技术
----导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar 不要忘记导入数据库驱动jar包
----定义配置文件 c3p0-config.xml
----创建核心对象 数据库连接池对象 ComboPooledDataSource
DataSource ds = new ComboPooledDataSource(); //默认使用默认配置,
DataSource ds = new ComboPooledDataSource("otherc3p0"); //使用自定义配置 otherc3p0为在配置文件定义的名称
----获取连接: getConnection
Connection conn = ds.getConnection();
---【Druid】 数据库连接池实现技术,由阿里巴巴提供的
----导入jar包 druid-1.0.9.jar
----定义配置文件:
是properties形式的
可以叫任意名称,可以放在任意目录下
----加载配置文件。Properties
Properties pro = new Properties();
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
----获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
----获取连接:getConnection
Connection conn = ds.getConnection();
---【JdbcTemplate对象】 Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
----导入jar包
spring-beans-5.0.0.RELEASE.jar
spring-core-5.0.0.RELEASE.jar
spring-jdbc-5.0.0.RELEASE.jar
spring-tx-5.0.0.RELEASE.jar
----JdbcTemplate template = new JdbcTemplate(DataSource对象);
参数:sql 封装对象的RowMapper(new BeanPropertyRowMapper<类型>(类型.class)) 占位符数据
-----update() 执行DML语句。增、删、改语句
-----query() 查询结果,将结果封装为JavaBean对象
-----queryForMap() 查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合 这个方法查询的结果集长度只能是1
-----queryForList() 查询结果将结果集封装为list集合 将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
-----queryForObject 查询结果,将结果封装为对象
jsp知识点
指令:用于配置jsp页面,导入资源文件
格式:<%@ 属性名1=属性值1 属性名2=属性值2 属性名n=属性值n ..... %>
分类:
----page:配置jsp页面的
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
--1、contentType:等同于response.setContentType()
1设置响应体的mime类型以及字符集
2设置当前jsp页面的编码(只能是高级的ide才能自动生成,使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
--2、language:脚本语言,目前仅支持java
--3、import:导包
--4、errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
--5、isErrorPage:标识当前页面是否是错误页面
true:是。可以使用内置对象exception
false:否。默认值,不可以使用内置对象exception
----include:页面包含的。导入页面的资源文件
<%@ include file="top.jsp" %>
----taglib:导入资源
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix:前缀 自定义
----注释
----html注释 <!-- --> 只能注释html片段
----jsp注释 <%-- --%> 可以注释jsp页面任意内容(推荐使用)
----内置对象(一共九个)在jsp页面中不需要创建,直接使用的对象
变量名 真实类型 作用
===================域对象===============================
-1、pageContext: PageContext 当前页面共享数据,还可以获取其他内置的八个对象
-2、request: HttpServletRequest 一次请求访问的多个资源(转发)
-3、session: HttpSession 一次会话的多个请求间
-4、application: ServletContext 所有用户间共享数据
=======================================================
-5、response: HttpServletResponse 响应对象
-6、page: Object 当前页面(Servlet)的对象 相当于this
-7、out: JspWriter 输出对象,数据输出到页面上
-8、config: =ServletConfig servlet的配置对象
-9、exception: Throwable 异常对象 只有声明isErrorPage才有该内置对象
----EL表达式 Expression Language (表达式语言) 替换和简化jsp页面中java代码的编写
----语法 ${ 表达式 }
注意:jsp默认支持el表达式,如果要忽略el表达式
设置jsp中page指令:isElIgnored="true" 忽略当前jsp中所有el表达式
\${} :忽略单个表达式
${empty } 判断字符串,集合,数组对象是否为null或长度为0
${not empty } 判断字符串,集合,数组对象是否不为null或不长度为0
----获取值==${域名称.键名} 从指定域中获取指定键的值(el表达式只能从域对象中获取值)
>=======================================================
|域名称 对应域
|------------------------------------------------
|pageScope pageContext
|requestScope request
|sessionScope session
|applicationScope application(ServletContext)
|--------------------------------------------------
|举例:在request域中存储了name=张三 获取:${requstScope.name}
======================================================
---键值 ${键名} 表示以此从最小的域中查找是否有该键对应的值,直到找完为止
---对象属性 ${域名称.键名.属性名} 属性名本质上是对象的getxxx()方法去掉get首字母小写 相当于调用了getxxx方法获取值
---list集合值 ${域名称.键名[索引]}
---map集合值 ${域名称.键名.key}或${域名称.键名["key"]}
----隐式对象:el表达式中不用创建直接就可以用 类似jsp内置对象不等价 el表达式中有11个隐式对象
pageContext 可以获取jsp其他八个内置对象
${pageContext.request.contextPath}:jsp页面中动态获取虚拟目录
----JSTL JavaServer Pages Tag Library JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签
----作用:用于简化和替换jsp页面上的java代码
----使用步骤:
1-导入jstl相关jar包
javax.servlet.jsp.jstl.jar
jstl-impl.jar
2-引入标签库:taglig指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3-使用对应标签
【<c:if>标签】
<!--c:if标签:
1-test必须属性,接收boolean表达式
如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
一般情况下,test属性值会结合el表达式一起使用
2-注意:c:if标签没有else标签,如果需要else可以再写一个c:if标签
-->
【<choose>标签】
<!--choose标签
案例:完成数字编号对应星期几
1-域中存储一数字
2-使用choose标签取出数字 相当于switch声明
3-使用when标签做数字判断 相当于case
4-otherwise标签做其他情况的声明 相当于default
-->
<%
if(request.getParameter("choose")!=null){
int c = Integer.parseInt(request.getParameter("choose"));
request.setAttribute("choose", c);
}else{
request.setAttribute("choose", 7);
}
%>
<c:choose>
<c:when test="${choose==1}">星期一</c:when>
<c:when test="${choose==2}">星期二</c:when>
<c:when test="${choose==3}">星期三</c:when>
<c:when test="${choose==4}">星期四</c:when>
<c:when test="${choose==5}">星期五</c:when>
<c:when test="${choose==6}">星期六</c:when>
<c:when test="${choose==7}">星期日</c:when>
<c:otherwise>输入数字有误</c:otherwise>
</c:choose>
【<foreach>标签】
<!--foreach标签
1-完成重复的操作
for(int i=0;i<19;i++){}
属性:
-1、begin:开始值
-2、end:结束值
-3、var:临时变量
-4、step:步长
-5、varStatus:循环状态对象
index:容器中元素的索引,默认从0开始
count:循环次数
2-遍历容器
List<User> list;
for(User user:list){}
属性:
-1、items:容器对象 list
-2、var:容器中元素的临时变量 user
-->
<h4>for:</h4>
<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
循环次数:${s.count}
容器索引:${s.index}
值:${i} <br/>
</c:forEach>
<h4>foreach:</h4>
<c:forEach items="${list}" var="str" varStatus="s">
循环次数:${s.count}
容器索引:${s.index}
值:${str} <br/>
</c:forEach>
mysql命令行常用命令
【登陆MySQL】 mysql -u 用户名 -p
【创建数据库】 CREATE TABLE 数据库名
【选择使用数据库】 USE 数据库名
【打印表列表】 SHOW TABLES;
【建表】 CREATE TABLE 表名(元素名1 元素1类型,
元素名2 元素2类型,
... ,
元素名n 元素n类型
);
【显示表结构】 DESCRIBE 表名;
【修改表名】 rename table 原表名 to 新表名;
【修改表(加字段)】 alter table 表名 add字段 类型 其他;
【插入数据】 INSERT INTO 表名 (元素名1, 元素名2 .... 元素名n) VALUES (值1, 值2 ... 值n);
【打印表内容】 SELECT * FROM 表名;